1

我在我的项目中使用基于 spring 3 和 hibernate4.2 的注释配置,我有许多数据库表(视图对象/实体),其中有两个公共字段 createdDate 和 updatedDate。我想分离这两个领域。我想将这两个字段保留在某个类中,该类充当所有实体的超类,并使用每个子类继承映射的表来实现这一点。我不需要这个超类和子类实体之间的任何外键关系。任何人都可以通过示例向我推荐一个更好的解决方案。谢谢。

4

2 回答 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 回答