Java 如何正确地构造两个类之间的hibernate关系
我有一个情况,我有一个用户类和一个汽车类。 我的mysql数据库中的表可以如下所示 下面是我如何想象两个实体之间的关系的草图Java 如何正确地构造两个类之间的hibernate关系,java,hibernate,Java,Hibernate,我有一个情况,我有一个用户类和一个汽车类。 我的mysql数据库中的表可以如下所示 下面是我如何想象两个实体之间的关系的草图 user user_car car username firstname lastname <----> username car_id <----> car_id cartype tea bruc
user user_car car
username firstname lastname <----> username car_id <----> car_id cartype
tea bruce anderson tea 1 1 ford123
t arnold mena tea 2 2 audio2
t 2
}
用户类
@Entity
public class userr {
@Id
private String username;
private String firstname;
private String lastname;
//Some relation here, which I do not know how to properly set up
private Set<Car> cars = new HashSet<>();
public userr(){
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public Set<Car> getCars() {
return cars;
}
public void setCars(Set<Car> cars) {
this.cars = cars;
}
}
@实体
公共类用户{
@身份证
私有字符串用户名;
私有字符串名;
私有字符串lastname;
//这里有些关系,我不知道如何正确地建立
私家车=新的HashSet();
公共用户(){
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getFirstname(){
返回名字;
}
public void setFirstname(字符串firstname){
this.firstname=firstname;
}
公共字符串getLastname(){
返回姓氏;
}
public void setLastname(字符串lastname){
this.lastname=lastname;
}
公共设置getCars(){
返回车辆;
}
公共车辆(固定车辆){
这个。汽车=汽车;
}
}
非常感谢您的帮助。您应该在连接表中使用多对多映射。在Hibernate文档中查找它。在实体上使用以下映射
@OneToMany
@JoinTable(
name="USER_CAR",
joinColumns = @JoinColumn( name="username"),
inverseJoinColumns = @JoinColumn( name="car_id")
)
private Set<Car> cars = new HashSet<>();
@OneToMany
@可接合(
name=“USER\u CAR”,
joinColumns=@JoinColumn(name=“username”),
inverseJoinColumns=@JoinColumn(name=“car\u id”)
)
私家车=新的HashSet();
看起来我修复了它,在jointable中创建了第三列,它自动递增并充当主键。然而,现在它插入所有内容超过两次。如果有人知道一个简单的修复方法,我很乐意听到。我尝试了上述方法,并添加了一辆id为1的汽车,它成功地进入了我的数据库。就在我尝试将另一辆id为3的车发送给同一用户之后。但是我仍然得到重复的条目'tea-1'作为键'PRIMARY'我的hibernate是否尝试插入双行?因为当我试着插入一辆有身份证的车时,说dublicate键1似乎很奇怪3@JonCode用你的实际代码更新帖子以获得更好的答案。如果我使用Jay和@ManyToMany的代码,我在尝试插入另一辆车时仍然会出现重复错误。
@OneToMany
@JoinTable(
name="USER_CAR",
joinColumns = @JoinColumn( name="username"),
inverseJoinColumns = @JoinColumn( name="car_id")
)
private Set<Car> cars = new HashSet<>();