spring + hibernate共享属性和注释

时间:2012-02-01 16:37:39

标签: hibernate spring spring-roo

新手问题。

我有一些像这样定义的Spring / Hibernate实体bean:

@RooJavaBean
@RooJpaEntity
public class MyEntity {     
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @org.hibernate.annotations.Type(type="uuid-char")
    private String id;

    ...
}

我希望我的所有实体都有一个Id字段,其定义与上面完全相同。 在实体bean之间共享属性的最佳方法是什么? (我不想扩展一个共同的抽象类,并且可能不会退回到aop)。

是否有一些Hibernate“实体模板”进行调整?我可以通过注释来完成吗?

1 个答案:

答案 0 :(得分:1)

除了从公共超类(@MappedSuperclass)继承类之外,Hibernate和核心Java都没有办法。

为什么不可能的原因是你需要一个带有该字段的类(java),因此hibernate不能修改标准的java行为。

但是在AspectJ的帮助下你可以。有点像Spring-Roo,可以在自己的AspectJ建议中添加id值。

我想到了一些AspectJ Intertype声明,它将@Id...private Spring id字段添加到每个具有@Entity注释的类中。


另一方面,我觉得这是过度设计的。我个人在我的IDE中使用模板,所以我不必写所有的东西。这对我来说很好。