Seam实体中的其他方法

时间:2012-03-13 09:33:44

标签: java hibernate entity seam

我想为Seam实体添加一些其他方法。这些方法在数据库中没有自己的列。他们只是格式化和组合一些列。

@Entity
@Table(name = "event", schema = "public")
public class Event implements java.io.Serializable {

    // [...]

    @Column(name = "status", nullable = false, length = 13)
    @NotNull
    @Length(max = 13)
    private String status;

    public String getStatus() {
        return this.status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getSpecialStatus() { // not allowed as there is no setter and no column 'specialStatus'
        return someValue;
    }

    // [...]
}

此代码抛出以下异常:

javax.persistence.PersistenceException: org.hibernate.PropertyNotFoundException: Could not find a setter for property specialStatus in class foobar.entity.Event

我尝试添加以下setter:

private void setSpecialStatus(String status){
    throw new NotImplementedException();
}

异常更改为:

javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing column: specialStatus in public.event

有谁知道是否有办法解决这个问题?或者向实体添加其他方法是不好的做法? (如果是这样,我该如何实施呢?)

1 个答案:

答案 0 :(得分:1)

我不确定这会如何与你在字段上使用注释相互作用,但是如果你注释你的getter,你可以使用@Transient注释来告诉Hibernate这不会被持久化。

@Transient
public String getSpecialStatus() { 
    return someValue;
}