java - Hibernate 查询不从同一事务返回新添加的记录

标签 java mysql hibernate jpa

我的实体就像

@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 件事

  1. 使用 EntityManager 保留一些项目
  2. hibernate 查询“来自 newIdList 中 id 的项目”
  3. hibernate 查询“来自 parent=parentid 的项目”

在持久化新项目后的第一步中,我执行 entityManager.flush(); 并且这里的刷新模式是提交。 在第二步中,我给出了 hibernate 查询。在这里,我得到了正确的结果,但在第三步中,当我进行 hibernate 查询时,它返回了结果。但是这个结果不包含新持久化的查询。

我认为问题出在 parentId 条件上。根据要求,我无法更改条件。有什么办法可以解决这个问题吗?

最佳答案

@JoinColumn 不建立从 Item > Parent 的关系。

需要用相关的关联映射来注解这种关系,@OneToOne、@ManyToMany、@OneToMany、@ManyToOne等

关于java - Hibernate 查询不从同一事务返回新添加的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089032/

相关文章:

java - 如何在Android中访问第三方应用程序中的电子邮件帐户?

java - 坐标越界 :bufferedimage

php - Doctrine 查询构建器中的嵌套查询

java - org.hibernate.exception.JDBCConnectionException : could not fetch initial value for increment generator

java - 尝试使用泛型时出现问题

java - 按表从 ResultSet 中删除列

mysql - 在 mysql 中,有没有简单的方法可以知道错误/警告号的含义,而不是谷歌搜索

php - 从 IS NOT NULL 的数据中查询列

java - 使用 Hibernate @Index 注释在数据库上创建索引

java - Hibernate:在级联删除项目时清理集合的二级缓存