Hibernate存储派生属性

时间:2011-05-26 13:11:06

标签: java hibernate

我有一个Hibernate持久化的类,派生属性isComplete

@Entity
class Container {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long id;

    @Column private String oneFish;
    @Column private String twoFish;
    @Column private String redFish; 
    @Column private String blueFish;

    public Boolean isComplete(){
        return oneFish != null 
               && twoFish != null  
               && redFish != null 
               && blueFish != null;
    }
}

如何让Hibernate持久保存isComplete到数据库,以便其他(非休眠)访问可以看到值?

2 个答案:

答案 0 :(得分:1)

如果您使用@Column对方法进行注释,则会保留该方法(您可能必须在实体上指定@AccessType / @Access

但你不应该这样做。存储所有其他值并在需要时计算isComplete。这不是一项昂贵的操作。您甚至可以将其“缓存”在@Transient Boolean属性中,但不需要访问数据库。

答案 1 :(得分:0)

我正在使用XML Hibernate映射,但如果我正确理解Hibernate注释,您可以将isComplete()注释为@Column并提供无操作setter setComplete()。