![](/img/trans.png)
[英]Exception : org.hibernate.MappingException: Repeated column in mapping for entity
[英]I get error: Invocation of init method failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity
我收到错误消息:初始化方法调用失败; 嵌套异常是org.hibernate.MappingException:实体的映射中重复的列:com.messagemanager.domain.User列:id(应与insert =“ false” update =“ false”映射)
有我的实体:
@MappedSuperclass
public abstract class BaseEntity{
@Id
@Column(nullable = false, unique = true, name = "id", insertable = false, updatable = false)
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
@Entity
@Table(name = "User")
public class User extends BaseEntity implements Serializable{
@Column(name = UserFieldsKey.ID, length = 50, nullable = false)
private String name;
@Column(updatable = false, insertable = false)
@Transient
private List<Message> listMessage = new ArrayList<>();
public static class UserFieldsKey{
public static final String NAME = "name";
}
public User() {
}
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user")
public List<Message> getListMessage() {
return listMessage;
}
public void setListMessage(List<Message> listMessage) {
this.listMessage = listMessage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
@Table(name = "Message")
public class Message extends BaseEntity implements Serializable{
@Column(name = MessageFieldsKey.MESSAGE, length = 500, nullable = false)
private String message;
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="user")
private User user;
@Column(name = "id_user")
private Long id_user;
public Long getId_user() {
return id_user;
}
public void setId_user(Long id_user) {
this.id_user = id_user;
}
public static class MessageFieldsKey{
public static final String MESSAGE = "mes";
}
public String getMessage() {
return message;
}
public User getUser() {
return user;
}
public Message() {
}
public Message(String message, User user) {
this.message = message;
this.user = user;
}
public void setMessage(String message) {
this.message = message;
}
public void setUser(User user) {
this.user = user;
}
}
有任何想法吗?
PS非常感谢!
看来这是因为您拥有以下内容:
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="user")
private User user;
它将映射到User.id
; 并且在Message
,由于您正在扩展BaseEntity
您已经有一个id
问题已解决)我误解了表之间的关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.