我的实体就像
@Entity
@Table(name = "Item")
public class Item implements Serializable {
@Id
@GeneratedValue
@Column(name = "ID")
private long id;
@JoinColumn(name = "PARENT_ID")
@JsonIgnore
private Item parent;
}
我在一次交易中做了 3 件事
- 使用 EntityManager 保留一些项目
- hibernate 查询“来自 newIdList 中 id 的项目”
- hibernate 查询“来自 parent=parentid 的项目”
在持久化新项目后的第一步中,我执行 entityManager.flush();
并且这里的刷新模式是提交。
在第二步中,我给出了 hibernate 查询。在这里,我得到了正确的结果,但在第三步中,当我进行 hibernate 查询时,它返回了结果。但是这个结果不包含新持久化的查询。
我认为问题出在 parentId 条件上。根据要求,我无法更改条件。有什么办法可以解决这个问题吗?
最佳答案
@JoinColumn 不建立从 Item > Parent 的关系。
需要用相关的关联映射来注解这种关系,@OneToOne、@ManyToMany、@OneToMany、@ManyToOne等
关于java - Hibernate 查询不从同一事务返回新添加的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089032/