Java 如何修复org.hibernate.MappingException?

Java 如何修复org.hibernate.MappingException?,java,hibernate,jpa,jackson,Java,Hibernate,Jpa,Jackson,我是JPA新手,在尝试设置UserContact实体时遇到此错误 Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: USER_ID, for columns: [org.hibernate.mapping.Column(userContact)] 我有两个实体类和一个@Embeddeble类用于复合键。这个问题似乎有很多解决方案,所以我已经混合和匹

我是JPA新手,在尝试设置UserContact实体时遇到此错误

 Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: USER_ID, for columns: [org.hibernate.mapping.Column(userContact)]
我有两个实体类和一个@Embeddeble类用于复合键。这个问题似乎有很多解决方案,所以我已经混合和匹配了getter/setter和字段的属性。我尝试了@JsonBackReference和@JsonManagedReference、@ElementCollection和其他注释。使用@Access(AccessType.PROPERTY)确实正确启动了服务器,但在尝试执行db操作时出现了此错误

 org.codehaus.jackson.map.JsonMappingException: failed to lazily initialize a collection of role:
任何帮助都将不胜感激。这里是我的实体

用户

@Entity
@Table(name = "USER_RECORD")

public class User {

private UserRecordId id;    
private String name;
private String address;

@Column
@ElementCollection(targetClass=UserContact.class)
private Set<UserContact> userContact = new HashSet<UserContact>(0);

        @EmbeddedId
        @AttributeOverrides({
        @AttributeOverride(name = "userId", column = @Column(name = "USER_ID", nullable = false)),
        @AttributeOverride(name = "userId2", column = @Column(name = "USER_ID2", nullable = false)) })
public UserRecordId getId() {
    return this.id;
}
public void setId(UserRecordId id) {
    this.id = id;
}

@OneToMany(fetch = FetchType.EAGER, mappedBy = "user")
public Set<UserContact> getUserContact() {
    return this.userContact;
}
public void setUserContact(Set<UserContact> userContact) {
    this.userContact = userContact;
}   

@Column(name = "USER_NAME", nullable = false)
public String getName() {
    return this.name;
}
public void setName(String name) {
    this.name = name;
}

@Column(name = "USER_ADDRESS", nullable = false)
public String getAddress() {
    return this.address;
}
public void setAddress(String address) {
    this.address = address;
}
UserRecordId/embedded

@Embeddable
public class UserRecordId

private String userId;
private String userId2;


@Column(name = "USER_ID", nullable = false)
public String getUserId() {
    return this.userId;
}
.../////getUserid2
......
.....

override equals & hash code

您似乎已经注释了一个字段和一个getter(userContact)。您应该使用字段或属性访问,但不能同时使用两者(尤其是对于同一字段!)

此外,您还将其注释一次为
ElementCollection
,另一次为
OneToMany
。当元素是一个实体时,不能两者都是,当然也不能是
ElementCollection

@Embeddable
public class UserRecordId

private String userId;
private String userId2;


@Column(name = "USER_ID", nullable = false)
public String getUserId() {
    return this.userId;
}
.../////getUserid2
......
.....

override equals & hash code