【问题标题】:Hibernate IN clause from a JSONArray来自 JSONArray 的休眠 IN 子句
【发布时间】:2015-01-16 20:01:42
【问题描述】:

我正在尝试使用 Hibernate 获取列表。我得到一个带有 IN 值的 JSONArray。 JSONArray rolesEnSession 是,例如,["ROLE1", "ROLE2"]

public List<MenuLeft> getMenu(JSONArray rolesEnSession){


        String listaRoles = "";

        for (int i = 0; i < rolesEnSession.length(); i++) {
            try {
                listaRoles =  listaRoles + "'"+rolesEnSession.getString(i)+",";
            } catch (JSONException ex) {
                Logger.getLogger(LinkDAOImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return getCurrentSession()
                .createQuery("from MenuLeft "
                        + "WHERE menuRol in (:rolesEnSession)")
                .setParameter("rolesEnSession", listaRoles)
                .list();
    }

但我得到一个空白值。数据库中的 menuRol 列的值为 ROLE1ROLE2

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    在使用当前代码进行两次迭代后考虑listaRoles。它将具有价值:

    'ROLE_1,'ROLE_2,

    与其尝试构建格式良好的参数值字符串,只需将listaRoles 更改为实际的List 并将其作为参数传递。让 Hibernate 处理转换为有效 SQL。

    【讨论】:

    • 我该怎么做?只有List listaRoles = (List) rolesEnSession;??
    • @GiancarloVenturaGranados 见this 回答
    • 我试了一下,但我得到了java.util.ArrayList cannot be cast to java.lang.String
    • @GiancarloVenturaGranados 你能告诉我你的代码吗?
    • 上面的代码就是代码。你想给你看什么代码?
    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 2015-06-14
    • 2010-12-08
    • 2012-09-06
    • 1970-01-01
    • 2016-03-31
    • 2014-08-13
    • 2011-09-15
    相关资源
    最近更新 更多