相关疑难解决方法(0)

@ManyToMany三个表之间的关系

我的Spring JPA应用程序中有三个独立的实体 - User,Department,Role

我的数据库中有一个连接表来关联每个实体: USER_DEPARTMENT_ROLE

我的问题是,如何在我的实体类中定义这种关系?我是否必须@ManyToMany在每个单独的实体中定义关系?我知道如何定义两个表之间的这种关系,但是对于两个以上的表,我不知道从哪里开始.

任何帮助表示赞赏!

java orm spring jpa

8
推荐指数
1
解决办法
5034
查看次数

ManyToManyToMany - 使用 Hibernate 注释连接三个表

起初我认为这个解决方案可能会解决我的问题:

@Entity
public class User {

    @JoinTable(name = "user_permission",
        joinColumns = @JoinColumn(name = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "permission_id"))
    @MapKeyJoinColumn(name = "project_id")
    @ElementCollection
    private Map<Project, Permission> permissions = new HashMap<>();

}

@Entity
public class Project {
    ...
}

@Entity
public class Permission {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但在这个实现中,Permission每个Project. 我想完成为项目设置多个权限的能力,以便以下内容为真:

| user_id | project_id | permission_id |
|---------|------------|---------------|
| 1       | 1          | 1             |
|---------|------------|---------------|
| 1       | 1          | 2             |
|---------|------------|---------------|
| 1       | …
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate jpa

5
推荐指数
1
解决办法
4269
查看次数

Spring Data JPA - 为三个表创建 @Composite 键

我从这里扩展我的问题:使用 JPA/Hibernate 使用三个表定义 CompositeKey?。在此示例中,我希望创建复合键来创建 PRODUCT_ID、CATEGORY_ID、STOCK_ID 的唯一组合。

我开发了下面的代码,但不确定如何将记录保存到数据库中。

Stock.java

@Entity
public class Stock implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "STOCK_ID", unique = true, nullable = false)
    private Integer stockId;

    @Column(name = "STOCK_CODE", unique = true, nullable = false, length = 10)
    private String stockCode;

    @Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20)
    private String stockName;

    // Owner of the relationship
    @OneToMany(fetch = FetchType.LAZY, …
Run Code Online (Sandbox Code Playgroud)

java jpa composite-primary-key spring-data-jpa jpa-2.2

1
推荐指数
1
解决办法
3900
查看次数