簡體   English   中英

春季休息休眠OneToMany / ManyToOne

[英]Spring Rest Hibernate OneToMany / ManyToOne

我正在嘗試使用用戶名作為外鍵創建具有OneToMany關系的用戶表,但是ManyToOne關系中的用戶名字段每次都為Null。

關系:

User:

    @OneToMany(targetEntity = Authority.class, cascade=CascadeType.ALL, mappedBy="username")
    private Collection<Authority> authorities

Authority:

    @Column(nullable = false, name="username")
    @JoinColumn(name="user_username")
    String username;

結果表:

+----+--------------------+-----------+---------+
| id | username           | password  | enabled |
+----+--------------------+-----------+---------+
| 13 | will               | q         |       0 |
| 34 | I just got editted | adufhasdf |       1 |
| 36 | wakakawakwakaak    | ballz     |       0 |
+----+--------------------+-----------+---------+

+----+----------+------------+
| id | username | authority  |
+----+----------+------------+
|  6 | NULL     | ROLE_ADMIN |
|  7 | NULL     | ROLE_ADMIN |
|  8 | NULL     | ROLE_ADMIN |
| 12 | NULL     | ROLE_BASIC |
| 13 | NULL     | ROLE_BASIC |
| 14 | NULL     | ROLE_BASIC |
| 17 | NULL     | ROLE_BASIC |
| 18 | NULL     | ROLE_BASIC |
| 19 | NULL     | ROLE_BASIC |
| 20 | NULL     | ROLE_BASIC |
| 21 | NULL     | ROLE_BASIC |
| 22 | NULL     | none       |
| 23 | NULL     | ROLE_BASIC |
| 24 | NULL     | ROLE_BASIC |
| 25 | NULL     | none       |
| 26 | NULL     | none       |
| 27 | NULL     | ROLE_BASIC |
| 28 | NULL     | none       |
| 29 | NULL     | ROLE_ADMIN |
| 30 | NULL     | ROLE_ADMIN |
| 31 | NULL     | ROLE_BASIC |
| 39 | NULL     | ROLE_BASIC |
| 40 | NULL     | ROLE_USER  |
| 41 | NULL     | ROLE_USER  |
| 42 | NULL     | ROLE_USER  |
| 43 | NULL     | ROLE_ADMIN |
| 44 | NULL     | ROLE_ADMIN |
| 45 | NULL     | ROLE_USER  |
+----+----------+------------+

您的JoinColumn應該是:

@JoinColumn(name="username")

這是因為在Authority實體中將該字段標識為username

我認為原因是從多對一的角度出發,您必須使用User對象而不是String。 這是我嘗試過的,並且有效。

//用戶

@OneToMany(targetEntity = Authority.class, fetch = FetchType.EAGER, mappedBy = "user")
private Collection<Authority> authorities;

//權威

@ManyToOne
@JoinColumn(name="username", referencedColumnName = "username")
private User user;

結果:

在此處輸入圖片說明

希望有幫助!

在JPA文檔中找到了一個簡單的答案。

在用戶中

@OneToMany(targetEntity = Authority.class , cascade = CascadeType.ALL)
@JoinColumn(name="username", referencedColumnName="username")
private List<Authority> authorities

然后是管理局

@Column(nullable = false)
String username;

暫無
暫無

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

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