【问题标题】:Creating other public methods in entity class在实体类中创建其他公共方法
【发布时间】:2013-01-27 10:46:01
【问题描述】:

我有一个实体类

    @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、IBM WebSphere

【问题讨论】:

    标签: java hibernate jpa entity


    【解决方案1】:

    Transient 注解告诉 Hibernate 忽略一个字段。所以:

    @Transient
    private Service service;
    

    来自非常相似的 SO 问题:Make hibernate ignore class variables that are not mapped

    【讨论】:

    • 否 否。我想保存此服务字段。我也只是在 Rule 类中获得它的(服务)成员。
    • 你的架构是什么样的?
    • 规则类将有两个成员。名称和服务。服务将只有名称
    【解决方案2】:

    如果你不想存储它,你应该把它设为@Transient,就像上面提到的那样

    定义 @javax.persistence.Column(name = "service_id") getter 的字段注释,让休眠知道要使用哪个列。

    重命名数据库以使服务字段“SERVICENAME”使用默认列名

    【讨论】:

      【解决方案3】:

      由于 serviceName 不是 Rule 类的成员,因此方法名称存在问题。名字不能像

      getServiceName
      setServiceName
      

      应该是不是 getset prefix

      fetchServiceName
      addServiceName
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-10
        • 2015-03-13
        • 2011-12-06
        • 1970-01-01
        相关资源
        最近更新 更多