我有这门课
public class FolderOwner<T> { private T owner; }
在逻辑上,T可以是一个User
public class User {
private String id;
private String lastName, firstName, middleName;
}或者是Department
public class Department {
private long id;
private String name;
}现在,我有了这个类,它有一个FolderOwner实例的属性
public class Folder {
private FolderOwner owner;
//other attributes
}考虑到FolderOwner中的那些泛型类型,我的问题是如何在hibernate中映射它们?我已经在这个论坛上读到了一些答案,but they've done them using annotations.我对Hibernate映射非常陌生,我更喜欢XML而不是注释。
我对User的映射
<class name="com.fileManagement.dataDesign.User" table="user">
<id name="id" type="string" column="id"/>
<property name="lastName" column="lastName" type="string" not-null="true"/>
<property name="firstName" column="firstName" type="string"/>
<property name="middleName" column="middleName" type="string"/>
</class>我的部门地图
<class name="com.fileManagement.dataDesign.Department" table="department">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"/>
</class>请帮帮忙。谢谢。
发布于 2014-10-05 08:22:34
如果您想要所有表中都存在的基本数据字段,请使用基类中的@MappedSuperclass并从那里扩展实体。
更新
对于hibernate,可以使用不同类型的继承。请参阅http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html的优秀文档。
除了hibernate的继承之外,还有带有@mappedsuperclass注释的jpa。它的优点是您的超类必须是一个实体,并且可以重用您已经注释过的所有内容。
我的用例是三个相同的表(dimension1、dimension2、dimension3),它们被另一个表引用。但是您可以想到许多其他好的用例,如创建、删除和更新时间戳、onwer、createdBy和updatedBy字段.
您所要做的就是像通常在实体中那样对超类字段进行注释,并扩展类。
https://stackoverflow.com/questions/26200733
复制相似问题