代码之家  ›  专栏  ›  技术社区  ›  MIsmail

带有Java 8 lambda代码的HibernateCallback

  •  -2
  • MIsmail  · 技术社区  · 6 年前

    如何使用Java 8 lambda正确重构此示例?

    我试图在以下示例中使用Java 8 lambda:

    hibernateTemplate.execute(new HibernateCallback<HumanMainInfo>() {
        @Override
        public HumanMainInfo doInHibernate(Session session) throws HibernateException {
            CriteriaBuilder builder = session.getCriteriaBuilder();
            CriteriaQuery<HumanMainInfo> query = builder.createQuery(HumanMainInfo.class);
            Root<SysUserMainInfo> sysUserRoot = query.from(SysUserMainInfo.class);
            Join<SysUserMainInfo, HumanMainInfo> humanJoin = sysUserRoot.join("human", JoinType.INNER);
            Predicate idCondition = builder.equal(sysUserRoot.get("id"), userId); 
            query.where(idCondition).select(humanJoin);
            return session.createQuery(query).uniqueResult();
        }
    });
    
    1 回复  |  直到 5 年前
        1
  •  3
  •   Yazan Jaber    6 年前
    hibernateTemplate.execute(session -> {
         CriteriaBuilder builder = session.getCriteriaBuilder();
         CriteriaQuery<HumanMainInfo> query = builder.createQuery(HumanMainInfo.class);
         Root<SysUserMainInfo> sysUserRoot = query.from(SysUserMainInfo.class);
         Join<SysUserMainInfo, HumanMainInfo> humanJoin = sysUserRoot.join("human", JoinType.INNER);
         Predicate idCondition = builder.equal(sysUserRoot.get("id"), userId); 
         query.where(idCondition).select(humanJoin);
         return session.createQuery(query).uniqueResult();
    });