【发布时间】:2017-12-08 09:04:23
【问题描述】:
考虑以下实体
用户详情(包括车辆)
@Entity
public class UserDetails {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int userId;
private String userName;
@OneToMany(mappedBy="user",cascade=CascadeType.ALL,orphanRemoval=true)
private List<Vehicle> vehicleList = new ArrayList<>();
//getter setters
}
车辆
@Entity
public class Vehicle {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int vehicleId;
private String vehicleName;
@ManyToOne
@JoinColumn(name="user_id")
private UserDetails user;
//getter setters
}
如果我们可以使用下面的代码实现相同的数据库表,为什么我们应该使用上面的
@OneToMany代码?这里使用@OneToMany是不是只是给出了从用户侧访问车辆的解决方案 如果我不需要任何用户访问车辆,这是正确的配置吗?而且由于它提供与双向相同的表配置,所以 我们应该说它是单向还是双向的方法?我认为根据代码我们无法从用户侧访问车辆,但用户从车辆侧访问,所以它是一种单向的吗?
用户详情(不含车辆)
@Entity
public class UserDetails {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int userId;
private String userName;
//getter setters
}
表格用户详情
mysql> select * from userdetails;
+--------+------------+
| userId | userName |
+--------+------------+
| | First User |
+--------+------------+
1 row in set (0.00 sec)
桌车
mysql> select * from vehicle;
+-----------+-------------+---------+
| vehicleId | vehicleName | user_id |
+-----------+-------------+---------+
| 2 | karizma | |
| 3 | scooty-pep | |
+-----------+-------------+---------+
2 rows in set (0.00 sec)
【问题讨论】:
标签: hibernate jpa one-to-many many-to-one