Java 如何连接两个表并将其用作jpa存储库

Java 如何连接两个表并将其用作jpa存储库,java,mysql,spring,spring-data-jpa,Java,Mysql,Spring,Spring Data Jpa,我的英语说得不好,所以我用了translate.google) 我有MySQL数据库: 以及我的实体: Role.java @Entity public class Role { private Integer id; private String roleName; @Id @Column(name = "id", nullable = false) public Integer getId() { return id; } pu

我的英语说得不好,所以我用了translate.google)

我有MySQL数据库:

以及我的实体:

Role.java

@Entity
public class Role {
   private Integer id;
   private String roleName;

   @Id
   @Column(name = "id", nullable = false)
   public Integer getId() {
       return id;
   }

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

   @Basic
   @Column(name = "role_name", nullable = false, length = 255)
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   public String getRoleName() {
      return roleName;
   }

   public void setRoleName(String roleName) {
       this.roleName = roleName;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       Role role = (Role) o;
       return Objects.equals(id, role.id) &&
            Objects.equals(roleName, role.roleName);
   }

   @Override
   public int hashCode() {

       return Objects.hash(id, roleName);
   }
}
 @Entity
 public class User {

    private Integer id;
    private String login;
    private String email;
    private String password;

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

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

    @Basic
    @Column(name = "login", nullable = false, length = 255)
    public String getLogin() {
       return login;
    }

    public void setLogin(String login) {
       this.login = login;
    }

    @Basic
    @Column(name = "email", nullable = false, length = 50)
    public String getEmail() {
       return email;
    }

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

   @Basic
   @Column(name = "password", nullable = true, length = 255)
   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       User user = (User) o;
       return Objects.equals(id, user.id) &&
            Objects.equals(login, user.login) &&
            Objects.equals(email, user.email) &&
            Objects.equals(password, user.password);
   }

   @Override
   public int hashCode() {

      return Objects.hash(id, login, email, password);
   }

   public User() {
   }

   public User(String login, String email, String password) {
       this.login = login;
       this.email = email;
       this.password = password;
   }
}
@Entity
@Table(name = "user_role", schema = "liverpool_site", catalog = "")
public class UserRole {
    private Integer id;
    private Integer userId;
    private Integer roleId;

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
       return id;
    }

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

    @Basic
    @Column(name = "user_id", nullable = false)
    public Integer getUserId() {
       return userId;
    }

    public void setUserId(Integer userId) {
       this.userId = userId;
    }

    @Basic
    @Column(name = "role_id", nullable = false)
    public Integer getRoleId() {
       return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserRole userRole = (UserRole) o;
        return Objects.equals(id, userRole.id) &&
                Objects.equals(userId, userRole.userId) &&
                Objects.equals(roleId, userRole.roleId);
    }

    @Override
    public int hashCode() {

          return Objects.hash(id, userId, roleId);
    }

    public UserRole() {
     }

     public UserRole(Integer userId, Integer roleId) {
         this.userId = userId;
         this.roleId = roleId;
    }
}
User.java

@Entity
public class Role {
   private Integer id;
   private String roleName;

   @Id
   @Column(name = "id", nullable = false)
   public Integer getId() {
       return id;
   }

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

   @Basic
   @Column(name = "role_name", nullable = false, length = 255)
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   public String getRoleName() {
      return roleName;
   }

   public void setRoleName(String roleName) {
       this.roleName = roleName;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       Role role = (Role) o;
       return Objects.equals(id, role.id) &&
            Objects.equals(roleName, role.roleName);
   }

   @Override
   public int hashCode() {

       return Objects.hash(id, roleName);
   }
}
 @Entity
 public class User {

    private Integer id;
    private String login;
    private String email;
    private String password;

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

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

    @Basic
    @Column(name = "login", nullable = false, length = 255)
    public String getLogin() {
       return login;
    }

    public void setLogin(String login) {
       this.login = login;
    }

    @Basic
    @Column(name = "email", nullable = false, length = 50)
    public String getEmail() {
       return email;
    }

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

   @Basic
   @Column(name = "password", nullable = true, length = 255)
   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       User user = (User) o;
       return Objects.equals(id, user.id) &&
            Objects.equals(login, user.login) &&
            Objects.equals(email, user.email) &&
            Objects.equals(password, user.password);
   }

   @Override
   public int hashCode() {

      return Objects.hash(id, login, email, password);
   }

   public User() {
   }

   public User(String login, String email, String password) {
       this.login = login;
       this.email = email;
       this.password = password;
   }
}
@Entity
@Table(name = "user_role", schema = "liverpool_site", catalog = "")
public class UserRole {
    private Integer id;
    private Integer userId;
    private Integer roleId;

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
       return id;
    }

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

    @Basic
    @Column(name = "user_id", nullable = false)
    public Integer getUserId() {
       return userId;
    }

    public void setUserId(Integer userId) {
       this.userId = userId;
    }

    @Basic
    @Column(name = "role_id", nullable = false)
    public Integer getRoleId() {
       return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserRole userRole = (UserRole) o;
        return Objects.equals(id, userRole.id) &&
                Objects.equals(userId, userRole.userId) &&
                Objects.equals(roleId, userRole.roleId);
    }

    @Override
    public int hashCode() {

          return Objects.hash(id, userId, roleId);
    }

    public UserRole() {
     }

     public UserRole(Integer userId, Integer roleId) {
         this.userId = userId;
         this.roleId = roleId;
    }
}
UserRole.java

@Entity
public class Role {
   private Integer id;
   private String roleName;

   @Id
   @Column(name = "id", nullable = false)
   public Integer getId() {
       return id;
   }

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

   @Basic
   @Column(name = "role_name", nullable = false, length = 255)
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   public String getRoleName() {
      return roleName;
   }

   public void setRoleName(String roleName) {
       this.roleName = roleName;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       Role role = (Role) o;
       return Objects.equals(id, role.id) &&
            Objects.equals(roleName, role.roleName);
   }

   @Override
   public int hashCode() {

       return Objects.hash(id, roleName);
   }
}
 @Entity
 public class User {

    private Integer id;
    private String login;
    private String email;
    private String password;

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

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

    @Basic
    @Column(name = "login", nullable = false, length = 255)
    public String getLogin() {
       return login;
    }

    public void setLogin(String login) {
       this.login = login;
    }

    @Basic
    @Column(name = "email", nullable = false, length = 50)
    public String getEmail() {
       return email;
    }

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

   @Basic
   @Column(name = "password", nullable = true, length = 255)
   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       User user = (User) o;
       return Objects.equals(id, user.id) &&
            Objects.equals(login, user.login) &&
            Objects.equals(email, user.email) &&
            Objects.equals(password, user.password);
   }

   @Override
   public int hashCode() {

      return Objects.hash(id, login, email, password);
   }

   public User() {
   }

   public User(String login, String email, String password) {
       this.login = login;
       this.email = email;
       this.password = password;
   }
}
@Entity
@Table(name = "user_role", schema = "liverpool_site", catalog = "")
public class UserRole {
    private Integer id;
    private Integer userId;
    private Integer roleId;

    @Id
    @Column(name = "id", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
       return id;
    }

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

    @Basic
    @Column(name = "user_id", nullable = false)
    public Integer getUserId() {
       return userId;
    }

    public void setUserId(Integer userId) {
       this.userId = userId;
    }

    @Basic
    @Column(name = "role_id", nullable = false)
    public Integer getRoleId() {
       return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserRole userRole = (UserRole) o;
        return Objects.equals(id, userRole.id) &&
                Objects.equals(userId, userRole.userId) &&
                Objects.equals(roleId, userRole.roleId);
    }

    @Override
    public int hashCode() {

          return Objects.hash(id, userId, roleId);
    }

    public UserRole() {
     }

     public UserRole(Integer userId, Integer roleId) {
         this.userId = userId;
         this.roleId = roleId;
    }
}
好的,这就是我的问题:

现在看看这些表是如何连接的,它可以用作jpa存储库,如下所示:

public class UserRoleJpa{
    private Integer idUser;
    private String login;
    private String email;
    private String roleName;

    //getter and setter methods
}


public interface UserRoleJpa extends JpaRepository<UserRoleJpa, String> {
      //for example
      List<UserRoleJpa> findAll();
}
public类UserRoleJpa{
私有整数idUser;
私有字符串登录;
私人字符串电子邮件;
私有字符串roleName;
//getter和setter方法
}
公共接口UserRoleJpa扩展了JpaRepository{
//比如说
列出findAll();
}
我将非常乐意为您提供任何建议和方法来实现这一点。


如果可能,使用Spring数据(JPA))

我认为最好定义两个条目User和Role,然后使用
ManyToMany
注释将它们映射,该注释将创建包含用户id和角色的表User\u角色

您只需将其添加到您的用户实体

@ManyToMany
@JoinTable(name="USERS_ROLES")
private Collection<Role>roles;
@manytomy
@JoinTable(name=“用户\角色”)
私人收藏角色;

而且不需要userRole实体

让您的
userRole
实体引用
User
Role
而不是它们的ID不是更容易吗?(您可以使用我在UserRole中添加的cource的
@ManyToOne
注释:'@ManyToOne@JoinColumn(name=“user\u id”,referencedColumnName=“id”,nullable=false)'和'@ManyToOne@JoinColumn(name=“role\u id”,referencedColumnName=“id”,nullable=false)'