休眠存储派生属性

问题描述

我有一个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持久保存到数据库,以便其他(非休眠)访问可以看到该值?     

解决方法

如果您用
@Column
注释该方法,它将被保留(您可能必须在实体上指定
@AccessType
/ѭ4)) 但是您不应该那样做。存储所有其他值,并在需要时计算ѭ0。这不是一个昂贵的操作。您甚至可以在
@Transient Boolean
属性中对其进行“缓存”,但是它不必进入数据库。     ,我正在使用XML Hibernate映射,但是如果我正确理解了Hibernate批注,则可以将isComplete()注释为@Column并提供不做设置的setComplete()。