gpt4 book ai didi

java - Hibernate 添加具有子实体 ID 的实体

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:41 27 4
gpt4 key购买 nike

我的对象

State.java

Entity
@Table(name = "STATE")
public class State {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "NAME", nullable = false)
private String name;
}

City.java

@Entity
@Table(name = "CITY")
public class City extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "NAME", nullable = false)
private String name;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "STATE_ID", nullable = false)
private State state;
}

我想添加一个我有城市名称和州 ID 的新城市。添加我执行的新城市

  • 从状态表中获取状态。 State state = (State) hibernateManager.get(State.class, id);
  • 在城市中设置状态。 city.setState(状态)
  • 对城市执行保存操作。 hibernateManager.save(city);

因为我有州 ID 并且在城市表中只有 ID 会被存储。那么有没有什么方法可以让 save(city) 无需调用状态表就可以完成相同的任务。

最佳答案

您可以单独使用 STATE_ID 列并映射到州。然后为了保存城市,您可以简单地设置 stateId。注意@JoinColumn 中使用的属性(insertable = false,updatable = false)以避免著名的重复列异常。

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "STATE_ID", insertable = false, updatable=false)
private State state;

@Column(name = "STATE_ID")
private Long stateId;

关于java - Hibernate 添加具有子实体 ID 的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012293/

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