0

我尝试运行示例 GWT/Google Appengine 应用程序 - ROO 使用 roo 命令“script costs.roo”生成的费用(如此处所建议那样)...

此应用程序使用 datanucleus-core - 1.1.6 和 HSQLDB 作为内存数据库。

我能够运行应用程序并成功存储和检索 Employee 对象。(这些 Employee 对象没有任何日期类型字段,而只有字符串和 int 字段)。

但我在存储“报告”对象时遇到问题,应用程序打印错误消息“意外的服务器错误”。查看日志和调试,由于尝试将 null 存储在非 null 日期类型字段(“已创建”日期字段)中而发生此意外错误

这就是复杂的地方...查看此 Report 类的源代码,“创建”日期字段未指定为“非空”字段(缺少 @notnull 注释)。为了确认这一点,我将数据库更改为 Postgresql 并检查了自动生成的模式,发现这个日期字段确实被标记为“非空”。

这意味着自动模式生成期间的 DataNucleus 始终将日期字段标记为“非空”。

我通过将 ORM 库更改为 Hibernate 进一步证实了这一点,相同的代码没有任何问题,并且能够在 HSQL 和 Postgres DB 中保存带有日期字段的报表对象。

它是 DataNucleus 的一个错误吗?还有其他人看到这个问题吗?

4

1 回答 1

1

我将 DataNucleus 用作 JPA,并带有许多日期字段(如时间戳或 DATE)并且完全没有问题。SchemaTool 始终在 DDL 中将它们创建为“NULL”(允许空值)。由于您不引用 Entity 类或日志,因此没有更多可用的帮助

于 2010-07-15T08:14:20.370 回答