最近使用JPA的 NamedQuery,总是抛出ReturnType异常,NullPoint空指针异常。后来发现是有以下规律:
1>当使用EntityManager.createNamedQuery(String, Class<T>)时,生成的TypedQuery只能用来进行查询操作,例如getResultList();不可以执行executeUpdate()方法,一旦执行executeUpdate()进行更新、删除操作,就会引发异常;
2>如果要通过命名查询生成Query,并执行executeUpdate()方法,只能使用EntityManager.createNamedQuery(String).executeUpdate(),不可以提供Class<T>参数。
分享到:
相关推荐
This tutorial show how to use Hibernate/JPA Named Queries. We start by explaining why we would use named queries. Next, we show an example of how to use named queries, either with annotations or XML ...
- `@NamedQuery`, `@NamedNativeQuery`:预定义SQL或JPQL查询。 - `@SqlResultSetMapping`:定义SQL查询结果集的映射。 7. **其他**: - `@DiscriminatorColumn` 和 `@DiscriminatorValue`:用于多态继承时,...
此外,`@NamedQuery`和`@NamedNativeQuery`可以定义预编译的查询,提高性能。 事务管理是Spring Data JPA的另一大优势。通过配置`@Transactional`注解,可以很容易地在方法级别控制事务的开始、提交或回滚。这使得...
- **查询操作**: 使用`find()`, `createQuery()`, `NamedQuery`等方式获取数据。 - **事务管理**: JPA支持声明式和编程式事务控制,确保数据一致性。 **4. JPA注解** JPA注解是实现ORM的关键,例如: - **@Table**:...
`JpaDemo1`可能还包含了查询实体的示例,例如使用`@NamedQuery`或`TypedQuery`: ```java @NamedQuery(name = "findAllUsers", query = "SELECT u FROM User u") ``` 或 ```java TypedQuery<User> query = em....
例如,@NamedQuery和@NamedNativeQuery用于定义预编译的查询。 3. **事务管理**:通过@TransactionAttribute注解,可以在方法级别声明事务边界,实现事务的ACID属性。 4. **事件监听**:Hibernate JPA允许注册事件...
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u") public class User {} ``` 然后在代码中可以通过EntityManager的createNamedQuery方法调用这个预定义的查询。 5. **动态查询** JPA允许...
@NamedQuery(name = "findPersonById", query = "select p from Person p where p.id = :id") ``` 在上面的示例代码中,我们定义了一个名为 `findPersonById` 的命名查询,该查询用于检索 Person 实体根据 id 字段...
这通常通过@NamedQuery或@Query注解在Repository接口中实现。 首先,我们需要定义一个实体类,这个实体类可能包含多个表的数据。例如,假设我们有两个相关的表`User`和`Address`,我们可以创建一个`UserProfile`类...
查询方法支持多种策略,包括自动查询生成、使用 `@NamedQuery`、`@Query` 注解编写自定义 JPQL 查询,以及使用参数绑定和 SpEL 表达式。 3.4. **存储过程** Spring Data JPA 也支持调用数据库存储过程,通过 `@...
- `@NamedQuery` 和 `@NamedNativeQuery`:预定义命名查询,提高性能。 - `@SqlResultSetMapping` 和 `@SqlResultSetMappings`:用于自定义SQL查询结果集的映射。 11. **其他批注**: - `@AssociationOverride` ...
命名查询是一种预定义的JPQL查询,可以在实体bean上通过`@NamedQuery`或`@NamedQueries`注解来声明。这样做可以提高代码的可读性和可维护性,特别是对于经常使用的查询。例如: ```java @NamedQuery(name = ...
5. **查询操作**:使用JPQL或Criteria API进行查询,或者使用`@NamedQuery`预定义查询。 **JPA的优缺点**: 优点: 1. 提供了一种统一的API,减少了与特定数据库的耦合。 2. 支持面向对象的编程模型,易于理解和...
Hibernate作为JPA的实现,提供了丰富的ORM功能,包括查询语言HQL,以及Criteria和NamedQuery等高级查询方式。 在“ant打包”这个环节,Ant是Apache的一个开源构建工具,它使用XML定义构建过程,可以执行编译、测试...
- 使用预编译查询(NamedQuery或Criteria API)提高性能。 - 注意实体的生命周期管理,避免内存泄漏。 总结来说,“Hibernate-JPA”是Java开发中一个强大且易用的数据持久化工具,通过遵循JPA规范,它为开发者提供...
@NamedQuery(name = "Person.findByFirstName", query = "SELECT p FROM Person p WHERE p.firstName = ?1") // 其他属性 } ``` - **使用 @Query**: - 可以通过 `@Query` 注解来定义具体的查询语句。 - 示例...
同时,还可以使用`@NamedQuery`或`@NamedNativeQuery`预定义查询。 ### 存储过程 JPA允许调用数据库的存储过程,使用`StoredProcedureQuery`接口进行操作。 ### 持久化上下文 持久化上下文(Persistence Context)...
7. **命名查询和查询注解**:介绍预定义的命名查询,以及在实体类上使用@NamedQuery和@Query注解的方式,提高代码的可读性和维护性。 8. **案例实战**:结合实际项目,演示如何在Java代码中执行JPQL语句,以及如何...
7. NamedQuery:预定义的JPQL查询,可以在实体类上用@NamedQuery注解声明,方便重复使用。 8. 查询构造:使用createQuery()和createNamedQuery()方法创建Query对象,然后调用executeUpdate()或getResultList()执行...
2. **@NamedQuery** - 在实体类中定义预编译的查询,提高性能。 3. **@Transactional** - 标记方法为事务性,Spring会自动管理事务。 **实例的运行** 为了运行这个实例,你需要进行以下步骤: 1. 配置数据库连接...