如何在Hibernate注释映射中隔离常用字段

时间:2013-08-07 05:08:49

标签: java spring hibernate-mapping

我在我的项目中使用spring 3和基于hibernate4.2的注释配置,我有多个数据库表(视图对象/实体),有两个公共字段createdDate& updatedDate。 我想隔离这两个字段。我想将这两个字段保存在某个类中,该类充当所有实体的超类,并使用table per subclass inheritance mapping实现它。我不需要这个超类和子类实体之间的任何外键关系..任何人都可以建议我一个更好的解决方案示例..谢谢。

2 个答案:

答案 0 :(得分:0)

您需要使用@MappedSuperclass注释超类。

来自Hibernate文档章节:5.1.6.4. Inherit properties from superclasses

  

(从超类继承属性)有时可用于通过技术共享公共属性   或业务超类,不包括它作为常规映射   实体(即没有该实体的特定表格)。为此你   可以将它们映射为@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
    ...
}

答案 1 :(得分:0)

不要使用@MappedSuperclass,只能在类型实际上是超类的子类型的情况下使用它,而这显然不是读取你的问题。

调查@Embedded@Embeddable,这是您真正想要的。

教程:http://www.concretepage.com/hibernate/example-embeddable-embedded-hibernate-annotation.php