2017-04-05 81 views
2

我得到错误: 调用init方法失败;嵌套异常是org.hibernate.MappingException:实体映射中的重复列:com.messagemanager.domain.User column:id(应该映射为insert =“false”update =“false”)我收到错误:调用init方法失败;嵌套异常是org.hibernate.MappingException:实体映射中的重复列

有我的实体:

@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; 
    } 
} 

任何想法?

P.S.非常感谢!

+0

UserFieldsKey.ID的值是什么? –

+0

@DmitriyS是我尝试回答的问题? – Eugene

+0

已被封闭。谢谢大家! –

回答

0

看起来那是因为你有这样的:

@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER) 
@JoinColumn(name="user") 
private User user; 

将映射到User.id;并在Message你已经有一个id因为你正在延伸BaseEntity

0

问题解决了)我误解了表之间的关系。

相关问题