我正在尝试学习hibernate api。我在关系方面遇到困难,应该如何就业。
考虑以下示例。 我们有两个表,车主和汽车。我们假设汽车只能由一辆汽车拥有,因此汽车与车主有多对一的关系。
现在常规SQL数据库看起来像这样。
|------------| |------------|
| Owner | 1 ------------------- N | Car |
|------------| |------------|
| id | | id |
| name | | model |
|------------| | car_id |
|------------|
现在,当我尝试使用Anotations编写实体时,困难就出现了。
特别是Car实体。
我的问题是两个:
1.汽车类实体应该有一个名为carId的字段,还是所有者所有者字段?
2.我也应该在两个实体中包含一对多和多对一的关系,或者只需要一个。
提前谢谢。
答案 0 :(得分:2)
你应该彼此有双向关系,如:
/*Many to one relationship with owner in class Car*/
public class Car {
@Id
private int id;
@ManyToOne
private Owner owner;
}
/*One to many relationship with car in class Owner*/
public class Owner {
@Id
private int id;
@OneToMany(mappedBy="owner")
private List<Car> cars;
}
答案 1 :(得分:0)
所以你应该使用所有者作为类型,如果你想访问车主和车主的汽车,你必须在两个类中设置关系。
public class Car {
@Id private int id;
@ManyToOne private Owner owner;
private String model;
/** getters and setters */
}
public class Owner {
@Id private int id;
private String name;
@OneToMany private List<Car> cars;
/** getters and setters */
}
答案 2 :(得分:0)
在提供的关系中,主实体是所有者。而作为现实生活中的例子,车主可以拥有多辆车。在这种情况下,每辆车都应该引用所有者(owner_id),或者您可以使用关系表。您可以指定单向映射或双向映射。
单向示例:
public class Owner {
@OneToMany
private List<Car> cars;
}
双向示例:
public class Owner {
@OneToMany(mappedBy = "owner")
private List<Car> cars;
}
public class Car {
@ManyToOne
private Owner owner;
}