java - 使用 hibernate 管理多对多关系

标签 java oracle hibernate spring-mvc

我正在制作简单的 spring mvc web 应用程序,并且我正在将 hibernate 与 oracle 结合使用。我有两个模型 - 用户和角色,我想定义它们之间的多对多关系。我看过几个教程并定义了我的模型,如下所示:

这是User类:

@Entity
@Table(name = "AppUser")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")
    @SequenceGenerator(name = "id_sequence", sequenceName = "ID_SEQ")
    @Column(name = "Id")
    private int id;

    @Column(name = "Username")
    private String username;

    @Column(name = "Password")
    private String password;


    @ManyToMany
    (
        fetch = FetchType.LAZY,
        cascade = {
                      CascadeType.PERSIST,
                      CascadeType.MERGE
                  }
    )
    @JoinTable
    (
        name = "user_roles", 
        joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, 
        inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") }
    )
    private Set<Role> roles = new HashSet<Role>(0);

    //getters and setters....
} 

这是角色类:

@Entity
@Table(name = "role")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")
    @SequenceGenerator(name = "id_sequence", sequenceName = "ID_SEQ")
    private int id;

    private String role;

    @ManyToMany
    (
        fetch = FetchType.LAZY, 
        cascade = {
                      CascadeType.PERSIST,
                      CascadeType.MERGE
                  },
        mappedBy = "roles"
    )
    private Set<User> users;

    //getters and setters....
}

当我在服务器上运行此应用程序时,出现以下错误:

enter image description here

此错误表明该表不存在,所以我感兴趣的是我应该手动创建它(我不这么认为)还是我在这里遗漏了任何内容?

最佳答案

只需将@ManyToMany 放在一个地方即可。

请删除角色实体中的@ManyToMany。 您可以检查下面的链接以使用 oracle 数据库处理@ManyToMany。 我希望这对您有所帮助:

https://gerardnico.com/jpa/many-to-many#oracle_database

关于java - 使用 hibernate 管理多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470282/

相关文章:

java - 为什么 spring.expression.compiler.mode 无法编译以下内容?

java - 没有封闭的类型实例是可访问的

oracle - 如何在oracle中将日期转换为时间戳(DD-MON-YYYY HH24 :MI:SS. FF格式)?

excel - Oracle:ORA-12154:TNS 问题:Excel 64 位/Windows 10 64 位

java - hibernate调用可以返回XML数据吗?

java - 我想使用spring boot和hibernate创建表,虽然没有报错,但是无法创建表,为什么?

java - 如何找到字符串中单词的精确匹配

java - java中从字符串中查找字符串

java - 使用oracle函数时如何在mybatis中将参数作为CLOB传递?

mysql - 用于一对多共享数据收集的 JPA 映射,具有用户特定值