ManyToMany表有额外的列Hibernate

时间:2013-12-10 15:38:32

标签: java hibernate

我正在通过hibernate为自动生成的表提供用户和聊天之间的关系(聊天可以有多个用户,用户可以有多个聊天):

==User Model==
@Entity
public class User implements Serializable{

    @Id
    @GeneratedValue
    private int userId;
    private String username

==聊天模型==

@Entity
public class Chat implements Serializable{

    @Id
    @GeneratedValue
    private int chatId;
    private String subject;
    @ManyToMany
    private List<User> users;
    @ManyToOne
    private User created;

这将生成一个名为Chat_User的新表,其中包含用户的ID和聊天。现在我需要在这个生成的表中添加另一个字段(lastSeen)。怎么能实现呢?现在我有一个看起来像下面那个的新模型,但它不起作用:

@Entity @Table(name = "Chat_User", catalog = "pdl") public class ChatUser implements Serializable {

    @Id
    @ManyToOne
    @JoinColumn(name="users_userId", nullable=false)
    private User user;

    @Id
    @ManyToOne
    @JoinColumn(name="Chat_chatId", nullable=false)
    private Chat chat;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date lastSeen;

它会抛出异常:'字段列表'中的未知列'lastSeen'。当我在数据库中手动创建它时,它以某种方式工作,但随后它创建了多个条目(一个使用lastSeen作为值NULL,另一个具有正确的值)。请帮忙。

1 个答案:

答案 0 :(得分:0)

您需要创建一个Embeddable Class并使用Association覆盖来覆盖连接表。 Click here for a link to sample code by mkyong。如果您需要更多帮助,请告诉我。