gpt4 book ai didi

java - Jpa&Hibernate是否加载数据库中异步变化的数据?

转载 作者:行者123 更新时间:2023-11-30 08:34:09 25 4
gpt4 key购买 nike

我有一个 oracle View ,我在其中查询我的数据库。

create or replace view my_view as
Select cc.CCID ccid
sm.SMCODE smcode,
NVL(sm.smname, cc.ccname) sname
From CC cc
Inner Join SM sm
On cc.id = sm.id;

我使用 jpa 2.1hibernate 4.3.7 将我的 View 映射到我的实体。我的实体类如下所示:

public class CCRequest implements Serializable {

private static final long serialVersionUID = 1L;

private String ccId;

private String smCode;

private String sName;
}

我的映射 xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
version="2.1">
<entity class="CCRequest" name="CCRequest001">
<table name="my_view"/>
<attributes>
<id name="ccId">
<column name="ccid"/>
</id>
<basic name="smCode">
<column name="smcode"/>
</basic>
<basic name="sName">
<column name="sname"/>
</basic>
</attributes>
</entity>
</entity-mappings>

因此我使用 jpa 正确查询了我的实体,它返回了我的所有记录。这是问题所在,当我异步更改数据库中的数据时,令人震惊的是我的 jpa 查询返回了以前的记录。我做错了什么吗?

最佳答案

Hibernate 会缓存以前的结果,因此您应该使用 entityManager.clear() 来清理关联的缓存。它将强制再次执行查询。有关详细信息的相关主题:

关于 Hibernate 缓存的更多信息:

另一种选择是使用 entityManager.refresh(obj) 将数据库数据与 session 数据同步。

关于java - Jpa&Hibernate是否加载数据库中异步变化的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022586/

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