0

我在 APACHE ISIS 中有一个存储消息(字符串)的程序。但是,我注意到数据库中消息的大小是 255。所以当我去存储超过 255 个字符的消息时,看起来像

javax.jdo.JDOFatalUserException

代码 static int numGears = 6; 会创建这样一个静态字段。此外,可以添加关键字 final 来表示齿轮的数量永远不会改变。局部变量 与对象在字段中存储其状态的方式类似,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count = 0;)。没有特殊关键字将变量指定为局部变量;该决定完全来自声明变量的位置——“列”中的“wh” 方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count = 0;)。没有特殊关键字将变量指定为局部变量;该决定完全来自声明变量的位置——“列”中的“wh” 方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count = 0;)。没有特殊关键字将变量指定为局部变量;该决定完全来自声明变量的位置——“列”中的“wh”MESSAGE" 最大长度为 255。请更正您的数据!

    private  String message;
@MemberOrder(sequence="3")

@MaxLength(5000)

public String getMessage() {
    return message;
}
public void setMessage(String message) {
    this.message = message;
}

请大家建议我存储超过 5000 个字符的数据。谢谢

4

1 回答 1

0

我认为这将取决于您的数据库。

一些数据库限制为 255 个字符,尽管我知道一些,例如 MS SQL Server 和 Sybase,它们将支持更多的列。例如,在 MS SQL 上,以下运行良好:

create table t1(a char(8000))

尝试尝试找出您正在使用的数据库的限制。

当你弄清楚这一点时,你需要同时配置 JDO 和 Isis 来告诉他们最大长度。对于 JDO,使用@javax.jdo.annotations.Column(length=x); 对于伊希斯,使用@MaxLength(x).

例如:

@javax.jdo.annotations.Column(length=1000)
@MaxLength(1000)
public String getDescription() { ... }

如果您的数据库仅限于 255 个字符的 char 列,并且您使用不同的数据库,那么唯一的其他选择是使用 Isis 的Clob类。


与此相关,我刚刚提出(并实施)ISIS-557,以便 Isis 自动推断@MaxLength是否@JDO Column(length=...)存在。

于 2013-10-08T17:21:40.713 回答