1

エンティティクラスがあります

    @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)

そのようなゲッターとセッターをエンティティクラスで使用できますか?

私は休止状態、春、DB2、IBMWebSphereを使用しています

4

3 に答える 3

1

@Transient保存したくない場合は、記載されているとおりに作成する必要があります

また

ゲッターに @javax.persistence.Column(name = "service_id") フィールド注釈を定義して、使用する列を hibernate に知らせます。

また

DB の名前を変更して、サービス フィールド「SERVICENAME」を指定し、デフォルトの列名を使用します

于 2013-02-12T08:31:16.617 に答える
0

serviceNameは Rule クラスのメンバーではなかったため、メソッド名に問題があります。名前のようにすることはできません

getServiceName
setServiceName

むしろ、または以外の ものであるべきですgetset prefix

fetchServiceName
addServiceName
于 2013-02-13T05:47:21.150 に答える
0

Transientフィールドを無視するように Hibernate に指示する注釈があります。そう:

@Transient
private Service service;

非常によく似た SO の質問から:マップされていないクラス変数を hibernate が無視するようにします

于 2013-02-12T07:32:36.830 に答える