【问题标题】:HibernateCallback with Java 8 lambda code带有 Java 8 lambda 代码的 HibernateCallback
【发布时间】:2018-04-25 08:07:09
【问题描述】:

如何使用 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();
    }
});

【问题讨论】:

    标签: java hibernate lambda java-8 refactoring


    【解决方案1】:
    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();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-19
      • 2019-05-11
      • 2019-10-04
      • 2020-10-06
      • 2014-11-05
      • 2017-06-02
      • 1970-01-01
      • 2014-07-13
      相关资源
      最近更新 更多