Java 实体管理器:同时使用主键和外键
我有麻烦了,我无法创建实体 用户(id,用户名,姓氏,…,pwd) 联系人(idUser,idContact) 我想创建实体联系人,其中包含用户和联系人作为主键和外键Java 实体管理器:同时使用主键和外键,java,jpa,entitymanager,Java,Jpa,Entitymanager,我有麻烦了,我无法创建实体 用户(id,用户名,姓氏,…,pwd) 联系人(idUser,idContact) 我想创建实体联系人,其中包含用户和联系人作为主键和外键 对于user.id,user和contact都是id的用户 这是我的实体联系人: @Entity @Table(name="contact") public class Contact { @Id @ManyToOne @JoinColumn(name="user-fk") privat
对于user.id,user和contact都是id的用户 这是我的实体联系人:
@Entity
@Table(name="contact")
public class Contact {
@Id
@ManyToOne
@JoinColumn(name="user-fk")
private User idUser;
@Id
@ManyToOne
@JoinColumn(name="contact-fk")
private User idContact;
public User getIdUser() {
return idUser;
}
public void setIdUser(User idUser) {
this.idUser = idUser;
}
public User getIdContact() {
return idContact;
}
public void setIdContact(User idContact) {
this.idContact = idContact;
}
这是我的实体用户:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String userName;
private String firstName;
private String lastName;
private String email;
private String password;
@OneToMany(mappedBy="emet")
private List<Message> messageEmet;
@OneToMany(mappedBy="recept")
private List<Message> messageRecept;
@OneToMany(mappedBy="idUser")
private List<Contact> idUser;
@OneToMany(mappedBy="idContact")
private List<Contact> idContact;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<Message> getMessageEmet() {
return messageEmet;
}
public void setMessageEmet(List<Message> messageEmet) {
this.messageEmet = messageEmet;
}
public List<Message> getMessageRecept() {
return messageRecept;
}
public void setMessageRecept(List<Message> messageRecept) {
this.messageRecept = messageRecept;
}
public List<Contact> getIdUser() {
return idUser;
}
public void setIdUser(List<Contact> idUser) {
this.idUser = idUser;
}
public List<Contact> getIdContact() {
return idContact;
}
public void setIdContact(List<Contact> idContact) {
this.idContact = idContact;
}
@实体
@表(name=“user”)
公共类用户{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私有字符串用户名;
私有字符串名;
私有字符串lastName;
私人字符串电子邮件;
私有字符串密码;
@OneToMany(mappedBy=“emet”)
私有列表消息组;
@OneToMany(mappedBy=“recept”)
私有列表消息接收;
@OneToMany(mappedBy=“idUser”)
私有列表用户;
@OneToMany(mappedBy=“idContact”)
私人通讯录;
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getUserName(){
返回用户名;
}
public void setUserName(字符串用户名){
this.userName=用户名;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共列表getMessageEmet(){
返回消息组;
}
公共无效设置消息集(列表消息集){
this.messageEmet=messageEmet;
}
公共列表getMessageRecept(){
返回消息接收;
}
public void setMessageRecept(列表messageRecept){
this.messageRecept=messageRecept;
}
公共列表getIdUser(){
返回idUser;
}
public void setIdUser(列表idUser){
this.idUser=idUser;
}
公共列表getIdContact(){
返回idContact;
}
public void setIdContact(列表idContact){
this.idContact=idContact;
}
我真的需要帮助,如果没有表Contact,我无法创建我的页面Contact类的@IdClass在哪里?复合PKs需要IdClass定义我该怎么做?(对不起,我的英语)阅读JPA实现的文档也许吧?我使用的是