作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的对象
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/
我是一名优秀的程序员,十分优秀!