Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个实体之间存在多个关系时引发异常_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 两个实体之间存在多个关系时引发异常

Java 两个实体之间存在多个关系时引发异常,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有两个类,它们之间有两个关系 用户类别: @Entity @Table(name="User") public class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="Id") private long id; @OneToMany(cascade = CascadeType.ALL, fetch

我有两个类,它们之间有两个关系

用户类别:

@Entity
@Table(name="User")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="Id")
    private long id;

    @OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="admin")
    private Set<Group> ownedGroup;

    @ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="members")
    private Set<Group> memberGroups;

    //.......
}

我看到了其他类似的帖子,但显然他们没有使用
javax.persistence.Entity
,这是这个错误的根本原因。你知道如何解决这个问题吗

是保留关键字。使用backtick转义保留关键字。查看答案

不幸的是,您的
@manytomy
映射不正确。 更新您的
实体,如下所示:

@Entity
@Table(name="`Group`") // Change your table name
public class Group implements Serializable {

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

    @NotNull
    @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="Admin", referencedColumnName="Id")
    private User admin;

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(
        name = "Group_User", 
        joinColumns = @JoinColumn(name = "group_id", referencedColumnName = "id"), //Give a column name 'group_id' and map it to Group primary key id
        inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id") //Give a column name 'user_id' and map it to User primary key id.
    )
    private Set<User> members;

    ...

}
@实体
@表(name=“`Group`]”//更改表名
公共类组实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“Id”)
私人长id;
@NotNull
@manytone(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name=“Admin”,referencedColumnName=“Id”)
私人用户管理员;
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@可接合(
name=“组用户”,
joinColumns=@JoinColumn(name=“group\u id”,referencedColumnName=“id”),//给出一个列名“group\u id”,并将其映射到组主键id
inverseJoinColumns=@JoinColumn(name=“user\u id”,referencedColumnName=“id”)//提供一个列名“user\u id”,并将其映射到用户主键id。
)
私有集合成员;
...
}

您使用的是什么数据库?另一个原因是我使用的是
com.querydsl.core.group.group
而不是我自己的
group
org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.myproject.model.User.memberGroups[com.querydsl.core.group.Group]
@Table(name = "`Group`")
@Entity
@Table(name="`Group`") // Change your table name
public class Group implements Serializable {

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

    @NotNull
    @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="Admin", referencedColumnName="Id")
    private User admin;

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(
        name = "Group_User", 
        joinColumns = @JoinColumn(name = "group_id", referencedColumnName = "id"), //Give a column name 'group_id' and map it to Group primary key id
        inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id") //Give a column name 'user_id' and map it to User primary key id.
    )
    private Set<User> members;

    ...

}