我有一个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? –