我有一个用户类和汽车类的情况。 我的mysql数据库中的表可能如下所示 下面是我如何想象两个实体之间关系的草图。
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
用户有一个包含汽车对象的Set。但汽车不应该持有任何用户的参考。我尝试了几种方法,但总是会遇到同样的错误,并且会出现重复的关键字&#39;&#39;在小学&#34;。
@Entity
public class car {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long car_id;
private String type;
public car(){
}
public long getCar_id() {
return car_id;
}
public void setCar_id(long car_id) {
this.car_id = car_id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
用户类
@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;
}
}
非常感谢任何帮助。
答案 0 :(得分:1)
您应该使用连接表的多对多映射。在Hibernate文档中查找。
答案 1 :(得分:1)
在您的实体上使用以下映射。
@OneToMany
@JoinTable(
name="USER_CAR",
joinColumns = @JoinColumn( name="username"),
inverseJoinColumns = @JoinColumn( name="car_id")
)
private Set<Car> cars = new HashSet<>();
答案 2 :(得分:0)
看起来我修复了它,通过在连接表中创建第三列,自动增量并作为主键。但是现在它插入的东西超过两次。如果有人知道一个简单的修复,我会听到它的声音。