Мои отношения с базой данных
Я создаю 3 файла Java для сопоставления следующим образом.
User.java
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id" , unique = true)
private int id;
@Column(name = "username")
private String username;
@Column(name = "name")
private String name;
@Column(name = "last_name")
private String lastName;
@Column(name = "password")
@Transient
private String password;
@Column(name = "email")
private String email;
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Role role = new Role();
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
User_Role.java
@Entity
@Table(name = "user_role")
@IdClass(User_Role.class)
public class User_Role implements Serializable {
private static final long serialVersionUID = -5488274192125813525L;
@Id
@Column(name="user_id")
private int user_id;
@Id
@Column(name="role_id")
private int role_id;
@ManyToOne(fetch = FetchType.LAZY ,cascade = CascadeType.ALL)
@JoinColumn(name="user_id" , referencedColumnName = "user_id",insertable=false, updatable=false , foreignKey = @ForeignKey(name = "fkuroleuser"))
private User user = new User();
@ManyToOne(fetch = FetchType.LAZY ,cascade = CascadeType.ALL)
@JoinColumn(name="role_id" , referencedColumnName = "role_id",insertable=false, updatable=false , foreignKey = @ForeignKey(name = "fkurolerole"))
private Role role = new Role() ;
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public int getRole_id() {
return role_id;
}
public void setRole_id(int role_id) {
this.role_id = role_id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Role getRole() {
return role;
}
public void setRole(Role role2) {
this.role = role2;
}
Role.java
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="role_id" , nullable = true)
private int role_id;
@Column(name="role")
private String role;
public int getId() {
return role_id;
}
public void setId(int role_id) {
this.role_id = role_id;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
Япытаюсь сделать добавление, удаление и обновление с помощью репозитория JPA, но кажется, что я все еще не прав с картографическим объектом.Но я могу запросить с критериями jpa с этим отображением.И я не могу изменить private Role role = new Role();
private User user = new User();
в моем проекте.
Я хочу знать, как правильно отобразить сущность, и, пожалуйста, дайте мне некоторую справку.
Редактировать Теперь мой User.java похож на
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id" , unique = true)
private int id;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"),inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roleList = new HashSet<>();
// getter setter
public User(int user_id,int role_id , String role){
this.id = user_id
this.roleList.add(new Role()); //still not work because can't add data role_id and role
}