JPA:应该为主键字段定义一个非只读映射

JPA:应该为主键字段定义一个非只读映射,jpa,mapping,eclipselink,Jpa,Mapping,Eclipselink,我在访问主键对象[class domein.PersoonSessieKey]时遇到了一个内部错误。 内部异常:java.lang.NoSuchMethodException:domein.PersoonSessieKey.getPersoon()尝试运行我的应用程序时出错。我看过类似的问题,但我不知道我做错了什么 我尝试过使用Embeddeble,但由于我不知道自己在做什么,这也引发了一个错误,这让我尝试了ClassId。但是现在我也遇到了一个错误,我不知道是什么原因造成的 实体类 @实体 @

我在访问主键对象[class domein.PersoonSessieKey]时遇到了一个
内部错误。
内部异常:java.lang.NoSuchMethodException:domein.PersoonSessieKey.getPersoon()
尝试运行我的应用程序时出错。我看过类似的问题,但我不知道我做错了什么

我尝试过使用Embeddeble,但由于我不知道自己在做什么,这也引发了一个错误,这让我尝试了ClassId。但是现在我也遇到了一个错误,我不知道是什么原因造成的

实体类

@实体
@访问权限(AccessType.PROPERTY)
@IdClass(PersoonSessieKey.class)
@表(name=“PersoonSessie”)
公共类clubpersoonsessione实现可序列化{
私人俱乐部会所;
私人会所;
@身份证
@manytone(cascade=CascadeType.PERSIST)
@JoinColumn(name=“sessionId”)
公共俱乐部sessie getsessione(){
返回会话;
}
公共空间设置赛(俱乐部赛){
this.sessione=sessione;
}
@身份证
@manytone(cascade=CascadeType.PERSIST)
@JoinColumn(name=“PersoonId”)
公共俱乐部俱乐部俱乐部俱乐部{
返回人员;
}
公共无效设置杆杆(俱乐部杆杆杆杆杆){
this.persoon=persoon;
}
公共俱乐部{
}
}
主键类

公共类PersoonSessieKey实现可序列化{
个人隐私;
私营部门;
public int getPersoonId(){
返回个人ID;
}
public int getSessionId(){
返回会话ID;
}
公共PersoonSessieKey(int persoonId,int SessioneId){
this.persoonId=persoonId;
this.sessionId=sessionId;
}
公众人士{
}
@凌驾
公共int hashCode(){
int hash=5;
hash=89*hash+this.persoonId;
hash=89*hash+this.sessionId;
返回散列;
}
@凌驾
公共布尔等于(对象obj){
if(this==obj){
返回true;
}
if(obj==null){
返回false;
}
如果(getClass()!=obj.getClass()){
返回false;
}
最终PersoonSessieKey other=(PersoonSessieKey)obj;
if(this.persoonId!=其他.persoonId){
返回false;
}
if(this.sessionId!=其他.sessionId){
返回false;
}
返回true;
}
}

IdClass的属性应与实体中用
@Id
注释的字段相匹配。这显然不是你发布的代码中的情况

domin.persoonsessionkey.getPersoon()
是预期的(未找到),因为您有一个
persoon
属性,该属性带有
Id

使其与idclass方法一起工作

  • 将idclass中的相同字段添加到enity中,并用@Id对其进行注释
  • 从关系中删除@Id
  • 将关系标记为不可更新和不可插入(以解决文章标题中的问题,即映射到同一列的多个可写字段)

IdClass的属性应与实体中用
@Id
注释的字段相匹配。这显然不是你发布的代码中的情况

domin.persoonsessionkey.getPersoon()
是预期的(未找到),因为您有一个
persoon
属性,该属性带有
Id

使其与idclass方法一起工作

  • 将idclass中的相同字段添加到enity中,并用@Id对其进行注释
  • 从关系中删除@Id
  • 将关系标记为不可更新和不可插入(以解决文章标题中的问题,即映射到同一列的多个可写字段)