Java 如何修复org.hibernate.MappingException?
我是JPA新手,在尝试设置UserContact实体时遇到此错误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类用于复合键。这个问题似乎有很多解决方案,所以我已经混合和匹
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