【发布时间】:2013-04-06 16:10:21
【问题描述】:
我对我的项目印象深刻,但突然间我注意到我做错了什么,因为每次创建、合并、删除我都是手动执行的,但我应该让 JPA 为我处理这些对吧?
我所做的是创建数据库,然后从中创建实体。所以here is my database所以你们可以理解我的概念问题。
简单来说:
一个user 有一个address,只有一个地址。这个address由city、state和country组成。我希望能够通过级联创建、更新user address。
我认为我的由 JPA 生成的映射是错误的(或者我的理解是错误的),让我展示一下:
public class User {
..
//bi-directional many-to-one association to UserAddress
@ManyToOne(cascade = CascadeType.ALL) // should be one to one ?
@JoinColumn(name="id_user_address")
private UserAddress userAddress;
..
}
public class UserAddress {
..
//bi-directional many-to-one association to User
@OneToMany(mappedBy="userAddress", fetch=FetchType.EAGER)
private List<User> users;
//bi-directional many-to-one association to AddressCity
@ManyToOne
@JoinColumn(name="id_city")
private AddressCity addressCity;
//bi-directional many-to-one association to AddressState
@ManyToOne
@JoinColumn(name="id_state")
private AddressState addressState;
//bi-directional many-to-one association to AddressCountry
@ManyToOne
@JoinColumn(name="id_country")
private AddressCountry addressCountry;
..
}
我认为user 有one adress only,所以应该是OneToOne 映射?
UserAdress country、state 和 city 也是如此。
【问题讨论】:
标签: mysql sql database-design jpa jpa-2.0