Java 实体管理器:同时使用主键和外键

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

我有麻烦了,我无法创建实体

用户(id,用户名,姓氏,…,pwd)

联系人(idUser,idContact)

我想创建实体联系人,其中包含用户和联系人作为主键和外键
对于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实现的文档也许吧?我使用的是