持久化实体缺少枚举值

时间:2014-09-16 00:19:29

标签: java hibernate unit-testing akka

我们正在使用Hibernate 4和Spring 4并设置了一个简单的DAO来管理具有ENUM字段的Task实体。

在我们的第一个单元测试中,创建一个Akka Actor,然后实例化一个新的Task对象,设置它的枚举字段,并通过DAO持久保存Task对象。一旦Actor完成了它的部分,我们就会回到单元测试线程,我们使用DAO来获取Task对象,它找到但是enum字段为null。如果我检查数据库,enum列肯定有一个值。

在我们的第二次单元测试中,我们删除了Akka Actor。实例化一个任务,设置枚举字段并在单元测试中保留所有内容。这次当我们使用DAO进行查找时,一切都在那里,包括enum字段。

那么为什么在第一次单元测试中我们无法检索具有正确枚举值的持久化任务?尚未设置DAO范围,因此应在Actor和单元测试内使用相同的DAO实例。

提前致谢。

此致

1 个答案:

答案 0 :(得分:0)

发现问题,这是我们的坏事。当Hibernate使用枚举值设置对象时,它调用UserType的实现,此时我们错误地配置了它。我们的代码确实捕获了错误,但它没有对它做任何事情,甚至没有日志声明。