Hibernate - 忽略未注释的字段而无需添加@Transient

时间:2014-01-29 13:05:53

标签: hibernate

是否有一种方法(配置参数)可以更改Hibernate默认行为,以考虑保留域类的非注释字段?

我希望Hibernate默认情况下会考虑非注释字段是暂时的,不应该考虑持久性,而不是努力用@Transient注释所有这些字段。

2 个答案:

答案 0 :(得分:1)

根据Hibernate Reference的说法,使用Hibernate注释看起来不太可能:

  

在注释世界中,每个非静态非瞬态属性   (实体或方法取决于访问类型)实体是   被视为持久性,除非您将其注释为@Transient。不   为您的财产注释相当于   适当的@Basic注释。

当然,使用XML映射,您只能添加将要映射的属性。

答案 1 :(得分:0)

我遇到了同样的问题,如果没有hibernate特定的注释来忽略作为业务逻辑部分但不对应于列的字段,那真的不好。我不能像我一样使用@Transient,否则我必须将DTO与实体类分开,这在我的案例中是非常有用的。

但是我发现了一种解决方法,我使用@Formula注释并在其中给出一个默认值。例如;

@Entity
@Table(name = "users")
public class User implements Serializable {



    @Column(unique = true, insertable = true, updatable = false)
    @Id
    String userId;


    @Formula("0") // @Transient
    Integer nonDBInteger;

...

我知道这似乎不是最好的,但它仍适用于我。