我有一個oracle查看我查詢我的數據庫。Do Jpa&Hibernate如何加載在數據庫中異步變化的數據?
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.1
和hibernate 4.3.7
我的看法映射到我的實體。 我的實體類看起來是這樣的:
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查詢返回以前的記錄。 我做錯了什麼?
1.您是直接或通過JPA/Hibernate方法更改數據庫中的數據嗎? - Hibernate緩存以前的結果,因此如果直接修改數據,直到清除緩存後纔會看到更改。 2.如果您使用JPA/Hibernate更改數據 - 是否刷新/提交它們? 3.它也可能取決於你如何管理EntityManager或Session。 – Justas
我直接更改數據。但在我的應用程序中,以不同於JPA/Hibernate方法的其他方式更改數據是可行的。這裏的解決方案是什麼?你說什麼意思取決於我如何管理EntityManage? –