【发布时间】:2015-03-03 23:23:17
【问题描述】:
我有
- 用户(user_id),
- LOCATION(location_id、country_id、state_id、city_id),
- COUNTRY(country_id, name),
- STATE(state_id, name)
- 城市(城市 ID,名称)。
通过 USER_LOCATION 表,USER 和 LOCATION 之间存在多对多关系。这是我在 User.java 中的映射:
//bi-directional many-to-many association to Location
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name="user_location"
, joinColumns={
@JoinColumn(name="USER_ID")
}
, inverseJoinColumns={
@JoinColumn(name="LOCATION_ID")
}
)
private List<Location> locations;
当我保存 USER 时,我只有前端的 USER.LOCATION.LOCATION_ID 并且我没有 LOCATION 对象的其他字段。我只想插入 USER_LOCATION 表。但是 SpringDataJPA 正在尝试insert into LOCATION with INSERT INTO LOCATION (CITY_ID, COUNTRY_ID, STATE_ID) VALUES (?, ?, ?) bind => [null, null, null]
所有 LOCATION、COUNTRY、STATE 和 CITY 数据都预先填充到数据库中,我不想为这些表插入任何新记录。我怎样才能插入到 USER_LOCATION 表中?
【问题讨论】:
-
您是说以后任何时候都不应更新 Location 对象吗?如果是这样,请在 @ManytoMany 映射上设置映射属性 update=false、insert=false 属性
标签: java mysql hibernate jpa spring-data-jpa