Inserting a Hibernate entity with a many-to-one relationship(插入具有多对一关系的Hibernate实体)
问题描述
我是Hibernate的新手,对于实体有FK时如何处理插入,特别是如何创建要插入的实体有一个问题。
我的实体简化了以下结构:
@Entity
@Table(name="event")
public class Event implements java.io.Serializable {
private int id;
private int eventType
private User user;
public Event (int id, int eventType, User user) {
this.id = id;
this.eventType = eventType;
this.user = user;
}
@Id
@Column(name="ID")
public int getId() {
return this.id;
}
@Column(name="EVENT_TYPE", nullable=false)
public int getEventType() {
return this.eventType;
}
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity=User.class )
@JoinColumn(name="USER_ID")
public User getUser() {
return this.user;
}
...
}
-----------
@Entity
@Table(name="user")
public class User implements java.io.Serializable {
private int id;
private String name;
public User (int id, String name) {
this.id = id;
this.name = name;
}
@Id
@Column(name="ID")
public int getId() {
return this.id;
}
@Column(name="Name", nullable=false)
public String getName() {
return this.name;
}
...
}
现在我要持久化一个新事件,并且已将用户ID与该事件的用户相关联。
我需要创建如下内容:
Event eventToInsert = new Event(45,6, *User object I don't have*);
稍后通知Hibernate保存eventToInsert。
我的问题是我只有UserID,但是要创建事件,我需要整个User对象,而不仅仅是它的ID。
所以,问题是:
-这是设计错误吗?事件是否应该只有"int userid"字段,而不是"user user"?
-Hibernate有什么方法可以处理这个问题吗?类似于:
Event eventToInsert = new Event(45,6, Hibernate.getEntity(UserTable, UserIdValue);
-执行此操作的合适方式是什么?
感谢您的帮助。
推荐答案
Event eventToInsert = new Event(45, 6, (User) session.load(User.class, userIdValue));
但是,如果您不了解Session.load和Session.get,我建议您阅读Hibernate documentation。这是最基本的内容:按实体的主键加载实体。
还要注意,在ManyToOne上有一个级联是很奇怪的:这意味着您可能会在每次修改ManyToOne的某个事件时创建/修改用户。
这篇关于插入具有多对一关系的Hibernate实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:插入具有多对一关系的Hibernate实体


基础教程推荐
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01