gpt4 book ai didi

java - Spring Data JPA仅保存多对多关系的映射表

转载 作者:行者123 更新时间:2023-11-29 12:22:08 26 4
gpt4 key购买 nike

我有

  • 用户(user_id),
  • 地点(location_id、country_id、state_id、city_id),
  • 国家(国家/地区 ID,名称),
  • STATE(state_id,名称)
  • CITY(city_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.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 表?

最佳答案

I only have USER.LOCATION.LOCATION_ID from the front end and I don't have other fields for LOCATION object.

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

Location location = locationRepository.findById(locationId);
user.getLocations.add(location);
userRepository.persist(user);

关于java - Spring Data JPA仅保存多对多关系的映射表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28843967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com