gpt4 book ai didi

java - 需要将通过 jpa 获取的 uniqueresult 转换为 String 数组的解决方案

转载 作者:行者123 更新时间:2023-11-29 03:00:17 24 4
gpt4 key购买 nike

当通过 hibernate 获取多行时,我使用下面的逻辑来读取每一行条目。使用 Hibernate 4 和 Websphere 7

@SuppressWarnings("unchecked")
List<Object[]> objectList = new ArrayList<Object[]>(query.getResultList());\

for (Object[] record : objectList) {
String entry1 = (String.valueOf(record[0]));
String entry2 = (String) record[1];
}

现在我正在尝试获取一行。尝试转换时失败。

Object[] result = (Object[])query.uniqueResult();
if(result != null) {
resultDetails [0] = (String)result[0];
resultDetails [1] = (String)result[1];
}

当尝试将 String[] 设置为实体时,由于显而易见的原因,它失败了。 String[] 不能用作实体。

尝试将对象复制到数组中

Object[] result = (Object[])query.uniqueResult();
logger.info(result + " -- Length --> " + result.length);

以上 2 条语句的输出是 [Ljava.lang.Object;@41a841a8 -- Length --> 2

复制数组失败的语句

String[] resultDetails = Arrays.asList(result).toArray(new String[result.length]);

即使使用 copyof 也会失败 Arrays.copyOf(result, result.length, String[].class);

需要了解此问题的变通解决方案。无需创建新实体类即可工作

---- 更新对我有用的代码作为解决方案。

  Object[] result = (Object[])query.uniqueResult(); int i = 0;
quoteOwnerDetails= new String[result.length];
for(Object obj : result){
System.out.println(obj);
quoteOwnerDetails[i] = obj.toString(); i++;
}

我发现第二个值是整数,因此案例失败了。对各个值执行 toString 即可解决。

除了创建新实体类之外,如果您对此有任何其他解决方案,请更新。

最佳答案

当调用 uniqueResult 时,您请求的是单个对象,因此不会返回任何数组。您的代码可以写成:

Object result = query.uniqueResult();
if(result instanceof String) {
resultDetails [0] = (String)result;
}

要了解此函数如何返回单个对象(这次不是数组),请参阅 doc .

关于java - 需要将通过 jpa 获取的 uniqueresult 转换为 String 数组的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468129/

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