在java中使用hibernate将列表类型转换为字符串

在java中使用hibernate将列表类型转换为字符串,java,hibernate,Java,Hibernate,我试图将列表数据类型转换为字符串,但其显示错误为java.lang.ClassCastException:java.lang.string无法转换为java.util.list 请帮助我解决此问题。这是使用hibernate完成的 for(int i2=1; i2<=gantttablecolnameList.size(); ++i2) { columnname= (String) ((List)gantttablecolnameList.get(i1)).get(0); } fo

我试图将列表数据类型转换为字符串,但其显示错误为java.lang.ClassCastException:java.lang.string无法转换为java.util.list 请帮助我解决此问题。这是使用hibernate完成的

for(int i2=1; i2<=gantttablecolnameList.size(); ++i2)
{
   columnname= (String) ((List)gantttablecolnameList.get(i1)).get(0);
}
for(inti2=1;i2Try

(List)GantTableColNameList.get(i1))
中,
GantTableColNameList.get(i1)
将为您提供元素..而不是列表


但实际上,您必须检查空条件。您的空模式现在是
空模式

如果您的
列表GantTableColNameList
确实有
字符串
,请尝试以下操作:

for(int i2=0; i2<gantttablecolnameList.size(); i2++)
{
  columnname= (String) (gantttablecolnameList.get(i2));
}
假设您的
列表GantTableColNameList
包含
字符串
GantTableColNameList.get(i1)
将为您提供一个
对象
,该对象实际上是
字符串
实例,用于运行时值
i1
指定的索引。简而言之,您正在尝试以下方法:

(List)gantttablecolnameList.get(i1)
 (List)"someString";
这是不可能的。

有几件事:

  • 向下转换到
    列表
    ,而不是现在的原始类型
  • 使用增强的for循环迭代列表。不要进行基于索引的迭代
  • 处理完上述问题后,您的代码将变得足够简单,可以让bug简单地消失:

     for (String columname : (List<String>) ganttablecolumnlist) ...
    
    用于(字符串列名:(列表)甘特表列列表)。。。
    

  • 无法将java.lang.String转换为
    true
    的java.util.List。您想要实现什么?在对Java数据类型有了充分的了解之前,不应该从Hibernate开始。如何声明
    GantTableColNameList
    ?你确定你的循环从1开始吗?(列表索引计数从0开始)GantTableColNameList声明为List GantTableColNameList=new ArrayList();
     for (String columname : (List<String>) ganttablecolumnlist) ...