pro JPA2 精通java持久化API 第七章

来源:互联网 发布:明解c语言pdf 编辑:程序博客网 时间:2024/06/06 03:01

jpql java持久化查询语言。

jpql的关键区别在于使用的是实体表达式而不是列引用。


Query接口用于当结果是Object类型的情况

TypedQuery更偏好于指定类型结果的情况


使用投影查询(也就是不是查询实体的某些字段)返回的是一个List 集合,集合中是Object数组


刷新模式

默认的持久化刷新模式是AUTO。

在查询操作之前,先对持久化上下文进行刷新,保证查询结果是正确的。


entityManager.setFlushMode(FlushModeType.COMMIT);

当设置刷新模式为提交的时候。这样会存在一个问题,如一些实体的状态已经更改还没有同步到数据库,当有查询操作的时候,会导致结果不准确,

并不是我们想要的结果。如果要定义为COMMIT,你就得确保查询的正确性,可以单独的会有Query接口单独去设置刷新模式。


请尽量避免在createNativeQuery()中使用更改删除操作,因为本地sql会绕过持久化上下文,这样会导致数据库中的值和持久化上下文的不一致。