gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:13:34 25 4
gpt4 key购买 nike

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

我在 MySQL 中有数据库:

enter image description here

和我的实体:

角色.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);
}
}

User.java

 @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;
}
}

UserRole.java

@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();
}

我将非常高兴获得任何建议以及如何实现这一点的方法。

如果可能的话使用 Spring Data JPA))

最佳答案

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

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

@ManyToMany
@JoinTable(name="USERS_ROLES")
private Collection<Role>roles;

并且不需要 userRole 实体

关于java - 如何连接两个表并将其用作jpa存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51761228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com