안녕하세요. JPA 복합 기본 키와 관련하여 도움을 요청하고 싶습니다. 내 프로젝트에 대한 내 MySQL 데이터베이스 다른 사용자, 작업 및 참여 테이블에 있습니다. 그것을 위해 나는 사용자, 작업 및 참여 클래스를 만들었습니다. 테이블 참여에는 사용자 기본 키와 기본 키를 참조하는 복합 기본 키가 있습니다. 다음 코드를 요약하면 참가 및 MyKeyParticipation입니다.개체를 jpa의 복합 기본 키로 사용하십시오.
@Entity
@ManagedBean
@IdClass(value=MyParticipationKey.class)
public class Participation {
@Id
@Column(name="pkIduser")
private User user;
@Id
@Column(name="pkIdet")
private Work work;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Work getWork() {
return work;
}
public void setWork(Work work) {
this.work = work;
}}
및
public class MyParticipationKey implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private User user;
private Work work;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Work getWork() {
return work;
}
public void setWork(Work work) {
this.work = work;
}
}
다음 줄
클래스 사용자를 우려 내 IDE 이클립스 나 에게 말한다 때문에@Entity
@ManagedBean
public class User implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long pkIduser;
@NotNull(message="Please enter your firstname")
@Size(min=3,message="Min size 3 characters!")
private String firstname;
@NotNull(message="Please enter your lastname")
@Size(min=3,message="Min size 3 characters!")
private String lastname;
@NotNull(message="Phone number field must not be null")
@Size(min=5,message="Phone number must have !")
private String phone;
private String statut;
@NotNull(message="Enter valid email")
@Pattern(regexp="([^[email protected]]+)(\\.[^[email protected]]+)*@([^[email protected]]+\\.)+ ([^[email protected]]+)",message="please enter valid email")
private String email;
@NotNull(message="please enter password")
@Size(min=3,message="Password must have 3 characters")
private String password;
public Long getPkIduser() {
return pkIduser;
}
public void setPkIduser(Long pkIduser) {
this.pkIduser = pkIduser;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getStatut() {
return statut;
}
public void setStatut(String statut) {
this.statut = statut;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@Entity
@ManagedBean
public class Work implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long pkIdet;
@NotNull(message="Enter the name")
@Size(min=3,message="Name must have 3 characters!")
private String name;
private String type;
private String description;
private String statut;
@ManyToOne
@JoinColumn(name="pkIduser")
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getStatut() {
return statut;
}
public void setStatut(String statut) {
this.statut = statut;
}
public Long getPkIdet() {
return pkIdet;
}
public void setPkIdet(Long pkIdet) {
this.pkIdet = pkIdet;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
내가 여기 잘못 이해하지 않는 작업 완료 그 임베디드 ID 클래스 [클래스 gct.entities.MyParticipationKey]에서 [작업] 매핑이이 클래스에 대한 잘못된 매핑입니다. 임베디드 ID 사양 (소스 [class gct.entities.Participation]의 속성 [myParticipationKey])과 함께 사용되는 임베드 가능 클래스는 기본 매핑 만 포함 할 수 있습니다. 기본이 아닌 맵핑을 제거하거나 임베디드 ID 스펙을 임베디드 소스에서 변경하십시오. 제발 나를 도와 주시면 제안을 환영합니다. 감사!
그리고 무엇이 잘못 되었나요? 일부 문서를보십시오 http://www.datanucleus.org/products/accessplatform_5_0/jpa/orm/compound_identity.html#a1_1_uni –
@NeilStockton 괜찮습니다. 방문했는데 내가 원하는 것을 찾지 못했습니다. 내 질문은 "참여"라는 테이블을 생성 관계 N-N에 의해 조인 된 두 테이블에 관한 것입니다. – SANDWIDI
그 페이지는 엔티티를 PK의 일부로하는 방법을 알려줍니다. 그리고 당신이 원하는 것을 말하지 않았으므로 어떻게 도와 줄 수 있습니까?! –