首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringDataJPA只为许多到多个关系保存映射表

SpringDataJPA只为许多到多个关系保存映射表
EN

Stack Overflow用户
提问于 2015-03-03 23:23:17
回答 1查看 1.1K关注 0票数 0

我有过

  • 用户(user_id),
  • 地点(location_id,country_id,state_id,city_id)
  • 国家(country_id,姓名)
  • 状态(state_id,名称)
  • 城市(city_id,姓名)。

通过USER_LOCATION表,用户和位置之间存在着多到多的关系.下面是我在User.java中的映射:

代码语言:javascript
复制
//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.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]

数据库中预先填充了所有的位置、国家、州和城市数据,我不想为这些表插入任何新记录。如何才能将其插入USER_LOCATION表?

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 08:33:14

我只有来自前端的USER.LOCATION.LOCATION_ID,也没有其他的LOCATION对象字段。

如果要将用户与现有位置相关联,则需要从数据库中实际获取现有的持久位置,并将其设置为关系。

代码语言:javascript
复制
Location location = locationRepository.findById(locationId);
user.getLocations.add(location);
userRepository.persist(user);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28843967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档