gpt4 book ai didi

java - hibernate注解双向映射

转载 作者:行者123 更新时间:2023-12-01 05:58:27 24 4
gpt4 key购买 nike

我正在使用 Spring 框架和带有注释的 Hibernate 构建一个 Web 应用程序,但遇到了两个实体之间的简单映射问题。

我正在尝试在用户和类(class)之间创建多对多关系。我遵循了 Hibernate 教程之一,我的实现如下:

用户类别:

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

private Long id;
private String email;
private String password;
private Set<Course> courses = new HashSet<Course>(0);


@Id
@GeneratedValue
@Column(name="USER_ID")
public Long getId() {
return id;
}

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


@Column(name="USER_EMAIL")
public String getEmail() {
return email;
}

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

@Column(name="USER_PASSWORD")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USER_COURSE", joinColumns =
{ @JoinColumn(name = "USER_ID") },
inverseJoinColumns = { @JoinColumn(name = "COURSE_ID") })
public Set<Course> getCourses() {
return courses;
}

public void setCourses(Set<Course> courses) {
this.courses = courses;
}
}

类(class)类别:

@Entity
@Table(name="COURSE")
public class Course {

private Long id;
private String name;

@Id
@GeneratedValue
@Column(name="COURSE_ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}

@Column(name="NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

问题是这个实现只允许我走一种路

user.getCourses()

我需要改变什么,以便我可以双向进行?

user.getCourses()
course.getUsers()

如有任何帮助,我们将不胜感激。

最佳答案

Hibernate 不会神奇地添加 getUsers()方法给你Course类,你需要自己做,以及 Set<User>字段。

我不知道您阅读哪个教程,但您应该阅读正确的文档(请参阅手册中有关 bidirectional associations 的部分),特别是其中讨论多对多关系的部分。

关于java - hibernate注解双向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053040/

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