【问题标题】:JPA: "Bad type on operand stack in arraylength"JPA:“arraylength 中操作数堆栈上的错误类型”
【发布时间】:2013-02-06 14:46:36
【问题描述】:

我正在尝试使用 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()I 在偏移量 12345。有关更多信息,请参阅 server.log 细节。命令部署失败。

如果我将 getCount 替换为

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

我收到另一个新错误:

远程失败:部署期间发生错误:出现异常 准备应用程序:方法中操作数堆栈上的错误类型 MyClass.getArrayOfInt()Ljava/lang/String;在偏移量 45678。请参阅 server.log 了解更多详情。命令部署失败。

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 我认为这应该是 setter,而不是 getter public void getArrayOfInt(String arrayOfInt)
  • 我简化代码时打错了。我已经更新了我的代码。

标签: java jpa glassfish


【解决方案1】:

我更改了以下声明:

 private int arrayofInt[];

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

现在可以正常工作了...(?)

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多