使用使用者管理的連線表的單向一對多關係
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId", unique=true))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No Mapping specified here.
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId", unique = true)
private Bar bar;
//You can store other objects/fields on this table here.
}
使用使用者管理的中間連線表指定一個 Foo
物件與許多 Bar
物件之間的單向關係。
這類似於 ManyToMany
關係,但是如果你向目標外來鍵新增 unique
約束,你可以強制它是 OneToMany
。
Foo
物件作為行儲存在名為 FOO
的表中。Bar
物件作為行儲存在名為 BAR
的表中。Foo
和 Bar
物件之間的關係儲存在名為 FOO_BAR
的表中。作為應用程式的一部分,有一個 FooBar
物件。
請注意,Bar
物件沒有對映回 Foo
物件。Bar
物件可以自由操作而不會影響 Foo
物件。
在設定 User
物件時,常常與 Spring Security 一起使用,該物件具有可以執行的 Role
列表。你可以向使用者新增和刪除角色,而無需擔心刪除 Role
的級聯。