Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 Hibernate mappedBy和Manytomy_Java_Hibernate_Maven_Jpa - Fatal编程技术网

Java Hibernate mappedBy和Manytomy

Java Hibernate mappedBy和Manytomy,java,hibernate,maven,jpa,Java,Hibernate,Maven,Jpa,我正在从头开始一个新项目,我遇到了这个我无法解决的问题。我有三个实体,它们之间都有很多关系。以下是集群: @Entity @Component @Table(name = "clusterEntity") public class Cluster { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false, updatable = false

我正在从头开始一个新项目,我遇到了这个我无法解决的问题。我有三个实体,它们之间都有很多关系。以下是集群:

@Entity
@Component
@Table(name = "clusterEntity")
public class Cluster {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false, updatable = false)
    private Long id;

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

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToMany
      @JoinTable(name="cluster_user",
          joinColumns=@JoinColumn(name="cluster_id", referencedColumnName="id"),
          inverseJoinColumns=@JoinColumn(name="user_id", referencedColumnName="id"))
    private List<User> users_cluster;

    @ManyToMany
      @JoinTable(name="cluster_sito",
          joinColumns=@JoinColumn(name="cluster_id", referencedColumnName="id"),
          inverseJoinColumns=@JoinColumn(name="sito_id", referencedColumnName="id"))
    private List<Sito> sitos;

    @Override
    public String toString() {
        return "Cluster{" +
                "id=" + id +
                ", name='" + name +
                ", users='" + users_cluster.toString() +
                '}';
    }
}
@实体
@组成部分
@表(name=“clusterEntity”)
公共类集群{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”,nullable=false,updateable=false)
私人长id;
@列(name=“name”)
私有字符串名称;
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
@许多
@JoinTable(name=“cluster\u user”,
joinColumns=@JoinColumn(name=“cluster\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“user\u id”,referencedColumnName=“id”))
私有列表用户\u集群;
@许多
@JoinTable(name=“集群”,
joinColumns=@JoinColumn(name=“cluster\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“sito\u id”,referencedColumnName=“id”))
私人名单SITO;
@凌驾
公共字符串toString(){
返回“集群{”+
“id=”+id+
“,name=”“+name”+
“,users=”+users\u cluster.toString()+
'}';
}
}
这是用户:

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

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

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

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

    @Column(name = "role", nullable = false)
    @Enumerated(EnumType.STRING)
    private Role role;

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

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

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

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

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

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

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

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

    public Long getId() {
        return id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPasswordHash() {
        return passwordHash;
    }

    public void setPasswordHash(String passwordHash) {
        this.passwordHash = passwordHash;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public String getG1() {
        return G1;
    }

    public void setG1(String g1) {
        G1 = g1;
    }

    public String getG2() {
        return G2;
    }

    public void setG2(String g2) {
        G2 = g2;
    }

    public String getG3() {
        return G3;
    }

    public void setG3(String g3) {
        G3 = g3;
    }

    public String getG4() {
        return G4;
    }

    public void setG4(String g4) {
        G4 = g4;
    }

    public String getG5() {
        return G5;
    }

    public void setG5(String g5) {
        G5 = g5;
    }

    public String getG6() {
        return G6;
    }

    public void setG6(String g6) {
        G6 = g6;
    }

    public String getAccess_token() {
        return access_token;
    }

    public void setAccess_token(String access_token) {
        this.access_token = access_token;
    }

    public String getRefresh_token() {
        return refresh_token;
    }

    public void setRefresh_token(String refresh_token) {
        this.refresh_token = refresh_token;
    }

    @ManyToMany(mappedBy="users_cluster")
    private List<User> users_cluster;

    @ManyToMany(mappedBy="users_sito")
    private List<User> users_sito;

    public User(){}

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", email='" + email.replaceFirst("@.*", "@***") +
                ", passwordHash='" + passwordHash.substring(0, 10) +
                ", role=" + role +
                '}';
    }
}
@实体
@组成部分
@表(name=“userEntity”)
公共类用户{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”,nullable=false,updateable=false)
私人长id;
@列(name=“email”,nullable=false,unique=true)
私人字符串电子邮件;
@列(name=“password\u hash”,null=false)
私有字符串密码哈希;
@列(name=“role”,nullable=false)
@枚举(EnumType.STRING)
私人角色;
@列(name=“G1”,nullable=true)
私有字符串G1;
@列(name=“G2”,nullable=true)
私有字符串G2;
@列(name=“G3”,null=true)
私有字符串G3;
@列(name=“G4”,nullable=true)
私有字符串G4;
@列(name=“G5”,nullable=true)
私有字符串G5;
@列(name=“G6”,nullable=true)
私有字符串G6;
@列(name=“access\u token”,nullable=true)
私有字符串访问令牌;
@列(name=“refresh\u token”,nullable=true)
私有字符串刷新\u令牌;
公共长getId(){
返回id;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getPasswordHash(){
返回密码哈希;
}
public void setPasswordHash(字符串passwordHash){
this.passwordHash=passwordHash;
}
公共角色getRole(){
返回角色;
}
public void setRole(角色角色){
this.role=角色;
}
公共字符串getG1(){
返回G1;
}
公共无效集合g1(字符串g1){
G1=G1;
}
公共字符串getG2(){
返回G2;
}
公共无效集合g2(字符串g2){
G2=G2;
}
公共字符串getG3(){
返回G3;
}
公共无效集合g3(字符串g3){
G3=G3;
}
公共字符串getG4(){
返回G4;
}
公共无效集合g4(字符串g4){
G4=G4;
}
公共字符串getG5(){
返回G5;
}
公共无效集合g5(字符串g5){
G5=G5;
}
公共字符串getG6(){
返回G6;
}
公共无效集合g6(字符串g6){
G6=G6;
}
公共字符串getAccess_令牌(){
返回访问令牌;
}
public void setAccess\u令牌(字符串访问\u令牌){
this.access\u token=访问\u token;
}
公共字符串getRefresh_token(){
返回刷新令牌;
}
公共void setRefresh\u令牌(字符串refresh\u令牌){
this.refresh\u token=刷新\u token;
}
@多用户(mappedBy=“用户\集群”)
私有列表用户\u集群;
@许多(mappedBy=“users\u sito”)
私人名单用户;
公共用户(){}
@凌驾
公共字符串toString(){
返回“用户{”+
“id=”+id+
“,email=”+email.replaceFirst(“@.*”,“@***”)+
“,passwordHash=”+passwordHash.substring(0,10)+
“,role=“+role”+
'}';
}
}
这是Sito:

@Entity
@Component
@Table(name = "sitoEntity")
public class Sito {

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

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

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @ManyToMany
      @JoinTable(name="sito_user",
          joinColumns=@JoinColumn(name="sito_id", referencedColumnName="id"),
          inverseJoinColumns=@JoinColumn(name="user_id", referencedColumnName="id"))
    private List<User> users_sito;

    @Override
    public String toString() {
        return "Sito{" +
                "id=" + id +
                ", name='" + name+
                ", users='" + users_sito.toString()+
                '}';
    }
}
@实体
@组成部分
@表(name=“sitoEntity”)
公共类Sito{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”,nullable=false,updateable=false)
私人长id;
@列(name=“name”)
私有字符串名称;
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
@许多
@JoinTable(name=“sito_user”,
joinColumns=@JoinColumn(name=“sito_id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“user\u id”,referencedColumnName=“id”))
私人名单用户;
@凌驾
公共字符串toString(){
返回“Sito{”+
“id=”+id+
“,name=”“+name”+
“,users=”+users_sito.toString()+
'}';
}
}
当我尝试使用maven编译时,我得到了关于mappedBY的以下错误,好像它写在关系的两侧,但实际上它只写在一侧:

原因:org.hibernate.AnnotationException:在关系的两侧非法使用mappedBy:User.users\u群集

有人知道我做错了什么吗?

Clustor 就我所见,
集群
实体的注释是正确的,除了一些k
private List<User> users_cluster;
private List<User> users;
public class User {

    // ...

    @ManyToMany(mappedBy="users")
    private List<Cluster> clusters;

    @ManyToMany(mappedBy="users")
    private List<Sito> sitos;

    // getters + setters


}
public class Sito {

     // ...

     @ManyToMany
     @JoinTable(name="sito_user",
          joinColumns=@JoinColumn(name="sito_id", referencedColumnName="id"),
          inverseJoinColumns=@JoinColumn(name="user_id", referencedColumnName="id"))
    private List<User> users;

    @ManyToMany(mappedBy = "sitos")
    private List<Cluster> clusters;


    // getters + setters
}