博主首页

jpa,JPA,EntityManager,JPAQueryFactory

复制代码
   jpa条件查询,or,and 使用
  

   @Autowired
private EntityManager entityManager; @Test public void test01() { CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<UserPO> query = cb.createQuery(UserPO.class); Root<UserPO> root = query.from(UserPO.class); Predicate id = cb.equal(root.get("id"), 2); Predicate id1 = cb.like(root.get("name"), "%现场%"); Predicate or = cb.or(id, id1); query.where(or); List<UserPO> resultList = entityManager.createQuery(query).getResultList(); resultList.forEach(r -> { r.setAccount("123"); }); System.out.println(one); System.out.println(resultList); }
复制代码

 

entityManager修改
记得加上事务注解
import org.springframework.transaction.annotation.Transactional;
 
@Transactional
 entityManager.merge(taskAttributePO1);

 

JPAQueryFactory注入

需要先将这个类交由spring管理

复制代码
@Configuration
public class BeanConfig {


    @Bean
    public JPAQueryFactory jpaQuery(EntityManager entityManager){
        return new JPAQueryFactory(entityManager);
    }

}
复制代码

然后再使用注解注入即可

    @Resource
    private JPAQueryFactory jpaQueryFactory;

 

 

JPAQueryFactory用法

jpaQueryFactory = new JPAQueryFactory(entityManager);
        QUserPO userPO = QUserPO.userPO;
        JPAQuery<UserPO> query = jpaQueryFactory.select(QUserPO.userPO).from(userPO);
        BooleanExpression c = userPO.id.eq(2).or(userPO.id.eq(1)).or(userPO.id.eq(3));
        JPAQuery<UserPO> where = query.where(c);
        List<UserPO> fetch = where.fetch();
        System.out.println(fetch);

 

复制代码
        /**
         * @Transactional事务使用总结:
         * 
         * 1、异常在A方法内抛出,则A方法就得加注解
         * 2、多个方法嵌套调用,如果都有 @Transactional 注解,则产生事务传递,默认 Propagation.REQUIRED
         * 3、如果注解上只写 @Transactional  默认只对 RuntimeException 回滚,而非 Exception 进行回滚
         * 如果要对 checked Exceptions 进行回滚,则需要 @Transactional(rollbackFor = Exception.class)
         * 
         * org.springframework.orm.jpa.JpaTransactionManager
         * 
         * org.springframework.jdbc.datasource.DataSourceTransactionManager
         * 
         * org.springframework.transaction.jta.JtaTransactionManager
         * 
         * 
         * 
         */
复制代码

 

jpaQueryFactory根据条件删除
    QTaskGroupPersonPO taskGroupPersonPO = QTaskGroupPersonPO.taskGroupPersonPO;
        long execute =
                jpaQueryFactory.delete(taskGroupPersonPO).where(taskGroupPersonPO.taskGroupId.eq(taskGroupId)).execute();

 

获取jpa所有实体类   获取jpa的所有类,获取jpa所有实体类

       EntityManager em =  AppContextHolder.getBean(EntityManager.class);
        Map<String, EntityPersister> persistMap = ((MetamodelImpl)em.getMetamodel()).entityPersisters();

 

posted @   笑~笑  阅读(1610)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示