Java 在实体类中创建其他公共方法

Java 在实体类中创建其他公共方法,java,hibernate,jpa,entity,Java,Hibernate,Jpa,Entity,我有一个实体类 @Entity @Table(name = "rule") public class Rule implements Cloneable, Serializable, IPojoGenEntity, IRule, SequencedEntity { private String name; private Service service; //getter .. setter for service and name

我有一个实体类

    @Entity
    @Table(name = "rule")
    public class Rule implements Cloneable, Serializable, IPojoGenEntity, IRule, SequencedEntity {

    private String name;

    private Service service;

    //getter .. setter for service and name

      public String getServiceName() {
        return (this.service.getName());
      }

     public void setServiceName(String servicename) {
       this.service.setName(servicename);
     }

    }
我通过RulClass对象获取服务名称时遇到异常

public String getServiceName() {
        return (this.service.getName());
      }
堆栈跟踪

Caused by: com.ibm.db2.jcc.b.SqlException: "RULE0_.SERVICENAME" is not valid in the context where it is used.
    at com.ibm.db2.jcc.b.fg.e(fg.java:1596)
    at com.ibm.db2.jcc.b.fg.a(fg.java:1206)
    at com.ibm.db2.jcc.a.gb.g(gb.java:140)
    at com.ibm.db2.jcc.a.gb.a(gb.java:39)
    at com.ibm.db2.jcc.a.w.a(w.java:34)
    at com.ibm.db2.jcc.a.vb.g(vb.java:139)
我们可以在实体类中使用这样的getter和setter吗


我正在使用hibernate、spring、DB2、ibmwebsphere

Transient
注释告诉hibernate忽略一个字段。因此:

@Transient
private Service service;

从非常相似的SO问题:。

如果您不想存储它,您应该按照前面提到的方法将其设置为
@Transient

定义 @getter的javax.persistence.Column(name=“service\u id”)字段注释,让hibernate知道要使用哪个列


重命名DB以使服务字段“SERVICENAME”使用默认列名,因为SERVICENAME不是规则类的成员,因此方法名存在问题。名称不能像

getServiceName
setServiceName
相反,它应该是除
获取
或设置
前缀

fetchServiceName
addServiceName

否。我要保存此服务字段。我正在规则类中获取它的(服务)成员。您的模式是什么样子的?规则类将有两个成员。姓名和服务。服务将只有一个名称