JPA:包含某些外键的映射表

时间:2018-11-12 17:15:40

标签: java hibernate jpa orm spring-data-jpa

我有4张桌子:

  1. 用户-包含用户数据
  2. 模块-词典,具有唯一的“模块名称”
  3. Modules_Access_Rules -所有“ Modul规则”的字典
  4. j_Users_Modules_Rule -链接前三个表的表(请参见图表)

enter image description here

我有一个实体,其中包含Set<Modul> -> ModulUser链接,例如@OneToManyModul包含{{ 1}} -> 也是Set<ModuleRule>。 我尝试使用@OneToMany来将Spring-Data-JPA-MappingUsersModules链接起来:

Modules Rules

,模块实体:

@Entity
@Table(name = "Users")
public class User implements UserDetails {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", nullable = false)
  private int id;


  @OneToMany
  @JoinTable(
        name = "j_Users_Modules_Rule",
        joinColumns = {
                @JoinColumn(name="id_Module",referencedColumnName="id"),
        },
        inverseJoinColumns = {
                @JoinColumn(name="id_rule",referencedColumnName="id")
        }
  )
  @ElementCollection(fetch = FetchType.EAGER)
  private Set<Module> authorities;

  // Getters and Setters

}

和ModuleRule实体:

@Entity
@Table(name = "Modules")
public class Module implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", nullable = false)
  private long id;

  @Column(name = "name", nullable = false)
  private String name;

  @OneToMany
  @JoinTable(
        name = "j_Users_Modules_Rule",
        joinColumns = {
                @JoinColumn(name="id_Module",referencedColumnName="id"),
        },
        inverseJoinColumns = {
                @JoinColumn(name="id_rule",referencedColumnName="id")
        }
  )
  @ElementCollection(fetch = FetchType.EAGER)
  private Set<ModuleRule> moduleRules;

  //Getters and Setters

}

我(根据业务要求)正确地使用 Modules ModuleRules 获得了 User ,但是当我保存@Entity @Table(name = "Modules_access_rules") public class ModuleRule implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private long id; @Column(name = "name", nullable = false) private String name; // Getters and Setters } 时,结果是 j_Users_Modules_Rule 表中的错误:

enter image description here

我了解我两次连接了表( User -> Module Module -> ModuleRule ),但是我不知道 j_Users_Modules_Rule 表中的User值如何正确。

  

我还没有找到解决方案,请使用save(使用Spring JdbcTemplate处理结果集)。

查询

ResultSetExtractor

0 个答案:

没有答案