springboot使用jpa的詳細講解(3)
阿新 • • 發佈:2019-02-05
這一章說一下jpa使用註解使用sql的方法
如果不按照jpa要求,jpa給我們提供了@Query註解來自定義sql或者hql
1、使用hibernate的hql方式 /** * 在使用hql的時候,不能使用*,如:(select * from User t where t.id = :id) * 表明直接使用類名 **/ @Query(value="select t from User t where t.id = :id") User findUserForHql(@Param("id")Long id) 2、使用sql的方式 /** * 需要新增nativeQuery表明是本地查詢,即使用sql * 使用正常的表名 **/ @Query(value="select * from t_user where id = :id",nativeQuery = true) User findUserForSql(@Param("id")Long id) 3、刪除方法 /** * 在刪除和更新的時候,要搭配@Modifying註解 **/ @Query(value="delete from User where id = :id") @Modifying void delete(@Param("id")Long id) 4、更新方法 @Query(value="update User t set t.name = :id where t.id = :name") @Modifying void update(@Param("id")Long id,@Param("name")String name)
注意:
- @Query不支援insert操作
- 在進行刪除更新操作時,要加事物(在啟動類中新增
@EnableTransactionManagement註解:開啟事物,然後再要使用事物的方法上加上@Translation就完成了事物的新增)
- hql不支援*號