java - Seam 实体中的其他方法

标签 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

有谁知道有什么办法可以解决这个问题吗?或者向实体添加额外的方法是不好的做法吗? (如果是这样,我应该如何实现?)

最佳答案

我不确定这将如何与您在字段上使用注释进行交互,但如果您对 getter 进行注释,则可以使用 @Transient 注释来告诉 Hibernate 这不会被持久化。

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

关于java - Seam 实体中的其他方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9681451/

相关文章:

java - Servlet doGet、doPost 和 Ajax

java - 静态元模型、jpa 和字段名称作为字符串

java - hibernate @GeneratedValue 正确吗?

java - 如何从单个数据定义生成 Java 和 PHP 中的实体?

java - 数据在数据库 jpa/hibernate 中插入两次

c# - Entity Framework - 从实体中获取表名

java - 如何在 Hibernate 4 中进行带限制的关联获取?

java - Android USB 附件模式无法使用 libusb 与主机 PC 读取/写入

java - 从 Hashmap 获取特定键

java - 使用 HSQLDB 作为 Spring、Hibernate 的可移植数据库