我试图在Hibernate中映射一棵POJO树,以便(a)简洁地将UUID用于任何地方的主键,(b)在其他不相关的表之间建立类似集合的关系。使用注释似乎工作得很好,但对于我来说,使用HBM映射无法让它以同样的方式工作。
例如,给定以下(缩写)类:
@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;
}...easy农民。当我运行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配置(以及在Hibernate工具中愚弄<hbm2hbmxml/>的输出)。我无法提出一个配置,它既不能创建包含额外联接的额外Unique父表,也不能在会话工厂中失败,从而导致错误:
关联引用未映射的类:唯一
有人对我的XML配置文件应该是什么样子有什么建议吗?还是我要走一条不好的路?
发布于 2010-12-23 18:10:05
就像这样:
<class name="Unique" abstract = "true">
<id name="uuid" />
<union-subclass name="Relationship">
<set name="members" table = "Relationship_Unique" >
<key />
<many-to-many class = "Unique" unique="true"/>
</set>
</union-subclass>
<union-subclass name="Activity">
<property name = "name" />
</union-subclass>
<union-subclass name="AssociaXML">
<property name = "xml" />
</union-subclass>
</class>还请参见:
https://stackoverflow.com/questions/4520988
复制相似问题