我有一个实体类
@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
答案 0 :(得分:0)
有Transient
注释告诉Hibernate忽略一个字段。所以:
@Transient
private Service service;
非常相似的问题:Make hibernate ignore class variables that are not mapped。
答案 1 :(得分:0)
如果您不想存储它,您应该将其设为@Transient
OR
定义 @ javax.persistence.Column(name =“service_id”)getget的字段注释让hibernate知道要使用哪个列。
OR
重命名DB以使服务字段“SERVICENAME”使用默认列名
答案 2 :(得分:0)
由于 serviceName 不是Rule类的成员,因此方法名称存在问题。名称不能像
getServiceName
setServiceName
而应该是 get
或set
prefix
fetchServiceName
addServiceName