休眠标准中的Case语句

时间:2017-09-27 11:39:44

标签: java hibernate hibernate-criteria

我是hibernate的新人我有一个MySQL Query,我希望使用Hibernate criteria

获得相同的输出

MySQL查询:

SELECT *, 
(case when status = 'Active' 
    then 'Can Login' 
    else 'Not able to login' end) as LoginStatus  
FROM UserLoginTable;

我的Hibernate代码:

SessionFactory sessionFactory = HibernateUtility.getSessionFactory();
Session session_hiber = sessionFactory.openSession();

session_hiber.beginTransaction();
Criteria criteria;

    criteria = session_hiber.createCriteria(UserLoginTable.class);
    List<UserLoginTable> myUserList = (List<UserLoginTable>)   
    criteria.list();

如何在上面的代码中添加Case criteria。 有什么办法吗? 感谢

1 个答案:

答案 0 :(得分:0)

虽然我没有测试此代码段,但您可以尝试使用CriteriaBuilder:

CriteriaBuilder cb = session_hiber.getCriteriaBuilder();
cb.selectCase()
    .when(cb.equal(path.get("status"), "Active"), "Can Login")
    .otherwise("Not able to login")
    .alias("LoginStatus");

可在此处找到一些帮助/信息: