gpt4 book ai didi

java - 如果我们在 hibernate 中只选择一列或多于一列,我们可以获得相同的返回类型吗?

转载 作者:行者123 更新时间:2023-11-30 22:22:39 24 4
gpt4 key购买 nike

我制作了一个用于执行 hibernate 选择操作的类,我的代码是工作正常,但我只是需要一些帮助

我正在传递来自其他类的 hibernate 选择查询以获取如果我的选择查询包含的列多于我调用的方法 getListbylimit(String query,int limit) 它的返回列表但是当我的选择查询列只包含一个比它给出异常 java.lang.String cannot be cast to [Ljava.lang.Object;

为此我制作了第二种方法 ListgetListForSingleColumn(String query) 获取单个的结果专栏

有没有办法为此编写方法,以便我只能调用一种方法。相反,我的选择查询包含一列或多列。

我可以得到返回类型吗 List<Object[]>如果我只选择一列而不是 List<String>这样我只能使用一种方法进行选择操作

这是我的代码

public class ContentDomain {

Session session;

public List<Object[]> getListbylimit(String query,int limit){

session = HibernateUtil.getSessionFactory().getCurrentSession();
/* session = HibernateUtil.getSessionFactory().openSession();
*/
List<Object[]> ls_ob = new ArrayList<Object[]>();

Transaction tx = null;

try {
tx = session.beginTransaction();

Query q = session.createQuery(query);
q.setMaxResults(limit);
ls_ob = (List<Object[]>)q.list();

}catch (HibernateException ex) {
if (tx != null) {
System.out.println("Exception in getList method " + ex);

tx.rollback();
ex.printStackTrace();

}
System.out.println("Exception getList tx open" + ex);
} finally {
session.close();
}

return ls_ob;
}






public List<String> getListForSingleColumn(String query){

session = HibernateUtil.getSessionFactory().getCurrentSession();
/* session = HibernateUtil.getSessionFactory().openSession();*/

List<String> ls_ob = new ArrayList<String>();

Transaction tx = null;

try {
tx = session.beginTransaction();

Query q = session.createQuery(query);

ls_ob = q.list();

}catch (HibernateException ex) {
if (tx != null) {
System.out.println("Exception in getList method " + ex);

tx.rollback();
ex.printStackTrace();

}
System.out.println("Exception getList tx open" + ex);
} finally {
session.close();
}

return ls_ob;
}



}

最佳答案

如果您使用 native 查询 (session.createSQLQuery("yournnativequery)),您将始终获得带有 .list() 的 Object[] 列表...然后很容易执行单个私有(private)解析方法来处理两个输出.

关于java - 如果我们在 hibernate 中只选择一列或多于一列,我们可以获得相同的返回类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36252233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com