【发布时间】: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) -
我简化代码时打错了。我已经更新了我的代码。