簡體   English   中英

Hibernate-用注釋映射三個表

[英]Hibernate - mapping three tables with annotations

我有三個表:用戶,角色,董事會。 每個用戶可以擁有多個董事會,但在一個董事會中,用戶只能擁有一個角色。 我創建了三個類,並添加了注釋:

class User {

   @Id
   @GeneratedValue
   @Column(name = "id")
   private long id;

   @Column(name = "mail")
   private String mail;
   ...

   @JoinTable(name = "userBoardRole",
        joinColumns = @JoinColumn(name = "id", unique = false),
        inverseJoinColumns = @JoinColumn(name = "role_id", unique = false))
   @MapKeyJoinColumn(name = "board_id", unique = false)
   @ElementCollection
   private Map<Board, Role> boardRoleMap = new HashMap<Board, Role>();
}

class Role {

   @Id
   @GeneratedValue
   @Column(name = "role_id")
   private long id;

   @Column(name = "name")
   private String name;
   ...
}

class Board {
   @Id
   @GeneratedValue
   @Column(name = "role_id")
   private long id;

   @Column(name = "name")
   private String name;
   ...
}

Hibernate創建一個新表,如下所示:

CREATE TABLE userboardroleid BIGINT(20)NOT NULL, role_id BIGINT(20)NOT NULL, board_id BIGINT(20)NOT NULL,PRIMARY KEY( idboard_id ),UNIQUE KEY UK_3lunj2moakkbpehqwqkjcvlf4role_id ),KEY FK_3lunj2moakkbpehqwqkjcvlf4role_id ),KEY FK_ta3fwgh4sln85f6f3jjbte38uboard_id ),KEY FK_lgd2b2mph9qoc1pe2h9r2wu8uid ),約束FK_lgd2b2mph9qoc1pe2h9r2wu8u外鍵( id )參考文獻usersid ),約束FK_3lunj2moakkbpehqwqkjcvlf4外鍵( role_id )參考boardrolerole_id ),約束FK_ta3fwgh4sln85f6f3jjbte38u外鍵( board_id )參考文獻boardsboard_id )) ENGINE = InnoDB DEFAULT CHARSET = utf8;

問題在於列role_id是唯一的。 有什么方法可以使用注釋將唯一列設置為false? 感謝您的任何幫助。

我正在使用休眠4.2.2。

只是一個提示,不確定是否能解決問題:為什么不使用@ManyToMany批注,而使用@ElementCollection @ElementCollection通常與@CollectionTable關聯,而不與@JoinTable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM