我在我的项目中使用基于 spring 3 和 hibernate4.2 的注释配置,我有许多数据库表(视图对象/实体),其中有两个公共字段 createdDate 和 updatedDate。我想分离这两个领域。我想将这两个字段保留在某个类中,该类充当所有实体的超类,并使用每个子类继承映射的表来实现这一点。我不需要这个超类和子类实体之间的任何外键关系。任何人都可以通过示例向我推荐一个更好的解决方案。谢谢。
问问题
388 次
2 回答
0
您需要使用 注释超类@MappedSuperclass
。
来自休眠文档章节:5.1.6.4。从超类继承属性
这(从超类继承属性)有时有助于通过技术或业务超类共享公共属性,而无需将其作为常规映射实体(即该实体没有特定表)。为此,您可以将它们映射为@MappedSuperclass。
@MappedSuperclass
public class BaseEntity {
@Temporal(TemporalType.TIMESTAMP)
public Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
public Date updatedDate;
}
@Entity
class NormalEntity extends BaseEntity {
@Id
public Integer id
...
}
于 2013-08-07T06:26:31.223 回答
0
不要使用@MappedSuperclass
,仅在类型实际上是超类的子类型时才使用它,这显然不是来自阅读您的问题。
调查一下@Embedded
,@Embeddable
这才是你真正想要的。
教程: http: //www.concretepage.com/hibernate/example-embeddable-embedded-hibernate-annotation.php
于 2013-08-07T12:00:51.463 回答