Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA从复合密钥中查找_Jpa - Fatal编程技术网

JPA从复合密钥中查找

JPA从复合密钥中查找,jpa,Jpa,我有一门课是这样的 @Entity public class User{ private String userId; @Id public String getUserId(){ return userId; } public void setUserId(String userId){ this.userId = userId; } } @Embeddible public class RegPk{ private String serial;

我有一门课是这样的

@Entity
public class User{
  private String userId;
  @Id
  public String getUserId(){
    return userId;
  }
  public void setUserId(String userId){
    this.userId = userId;
  }
}

@Embeddible
public class RegPk{
  private String serial;
  private String userId;
  ....
}

@Entity
@IdClass(RegPk.class)
public class Registration {
  private String userId, serial;

  private User user

  @Id
  @Column(name="SRL_C")
  public String getSerial() {return serial;}
  public void setSerial(String serial) {this.serial = serial;}
  @ManyToOne(cascade={CascadeType.REFRESH})
  @JoinColumn(name="USERID", referencedColumnName="USERID", nullable = false)
  public User getUser() {return user;}
  public void setUser(User user) {this.user = user;}
  @Id
  @Column(name="USERID", nullable = false)
  public String getUserId() {
    return userId;
  }
  public void setUserId(String userId) {
    this.userId = userId;
  }

}

RegPk pk = new RegPk();
pk.setSerial(dr.getSerial());
pk.setUserId(dr.getUserId());
Registration userOld =  em.find(Registration.class, pk);
但是当我试着运行它时,我得到了空值。我发誓我以为我让它工作了所以

1)这种事情可能发生吗?
2.)我做错了什么?

是的,如果您使用。否则,将两个不同的字段映射到同一列,这是无效的


javadoc提供了一个与您的情况几乎完全匹配的示例。

因此,在这种情况下,我的列注释是否在pk类中?如果仍然返回null,我将按照您所描述的创建第二个示例。也许我做错了什么