JPA:“arraylength中操作数堆栈上的错误类型”

时间:2013-02-06 14:46:36

标签: java jpa glassfish

我正在尝试使用JPA管理的以下实体在glassfish中部署webapp。在数据库中,数组int 存储在 varchar 中,我在setter / getter中拆分/连接此String

@Entity
public class MyClass
    implements Serializable
    {
    private long id;
    private int arrayofInt[];
    (...)

    private static String join(int array[])
        {
        StringBuilder b=new StringBuilder();
        for(int i:array)
            {
            if(b.length()!=0) b.append(',');
            b.append(i);
            }
        return b.toString();
        }

    private static int[] split(String s)
        {
        String tokens[]=s.split("[,]");
        int array[]=new int[tokens.length];
        for(int i=0;i< tokens.length;++i)
            {
            array[i]=Integer.parseInt(tokens[i]);
            }
        return array;
        }

    @Column(name="fieldName")
    public String getArrayOfInt()
        {
        return join(arrayOfInt);
        }

    public void setArrayOfInt(String arrayOfInt)
        {
        this.arrayOfInt=split(arrayOfInt);
        }

    @Transient
    public int getCount()
        {
        return this.arrayOfInt.length;
        }
  (....)
  }

当我的应用程序部署在glassfish中时,我收到以下错误:

  

远程故障:部署期间发生错误:异常时   准备应用程序:arraylength方法中的操作数堆栈上的错误类型   MyClass.getCount()我在偏移12345处。请参阅server.log了解更多信息   细节。命令部署失败。

如果我用

替换getCount
    @Transient
    public int getCount()
        {
        return 0,
        }

我又收到了一个新错误:

  

远程故障:部署期间发生错误:异常时   准备应用程序:方法中操作数堆栈上的错误类型   MyClass.getArrayOfInt()Ljava /郎/字符串;在抵消45678.请看   server.log以获取更多详细信息。命令部署失败。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经改变了声明:

 private int arrayofInt[];

 private int _arrayofInt[];
 (...)
 public String getArrayOfInt()
        {
        return join(_arrayOfInt);
        }

现在工作正常......(?)