使用用户管理的连接表的单向一对多关系
@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
的级联。