Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Seam实体中的其他方法_Java_Hibernate_Entity_Seam - Fatal编程技术网

Java Seam实体中的其他方法

Java Seam实体中的其他方法,java,hibernate,entity,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

我想向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标志public transient String xyz;