Я пытаюсь отобразить дерево POJO в Hibernate, чтобы я мог (а) кратко использовать UUID для первичных ключей повсюду и (б) внешне навязывать набороподобные отношения между иначе не связанными таблицами.Кажется, это прекрасно работает с использованием аннотаций, но я не могу заставить его работать так же, как с помощью отображения HBM XML.
Например, учитывая следующие (сокращенно) классы:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Unique {
private String uuid;
}
@Entity
public class Relationship extends Unique {
@OneToMany
private Set<Unique> members;
}
@Entity
public class Activity extends Unique {
private String name;
}
@Entity
public class AssociatedXML extends Unique {
@Lob
private String xml;
}
... легко, peasy.Когда я запускаю hbm2ddl, он создает таблицы Relationship
, Relationship_Unique
, Activity
и AssociatedXML
.Запросы, подобные следующему HQL, выглядят великолепно:
session.createQuery("select xml "
+ "from AssociatedXML as xml, Relationship as rel "
+ "left join rel.members as m "
+ "where m.uuid = :uuid").setString("uuid", activity.getUuid());
Тем временем я пытаюсь перейти к настройке XML.POJO генерируются из схемы XML.Так как источник генерируется, я стараюсь избегать ручного редактирования, чтобы добавить аннотации.
Я перепробовал каждую конфигурацию XML, которую только могу придумать (а также дурачиться с выводом <hbm2hbmxml/>
вСпящие инструменты).Я не могу придумать конфигурацию, которая не или не создает дополнительную Unique
родительскую таблицу, включающую дополнительное соединение, или не удается в фабрике сеанса с ошибкой:
Ассоциация ссылается на не отображенный класс: Уникальный
У кого-нибудь есть предложения относительно того, как должны выглядеть мои файлы конфигурации XML?Или я иду по плохому пути?