HibernateCallback с лямбда-кодом Java 8 - PullRequest
0 голосов
/ 25 апреля 2018

Как использовать лямбду Java 8 для правильного рефакторинга этого образца?

Я пытаюсь использовать 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 Ответ

0 голосов
/ 25 апреля 2018
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();
});
...