加载夹具时,未修改的枚举类型不匹配

时间:2011-09-21 15:43:04

标签: java hibernate playframework

我正在使用@ApplicationStart作业为dev db填充一些值,但是在我用它清除之后我遇到了奇怪的行为:

Fixtures.deleteDatabase()

我的一些模型有一个枚举字段,每当它尝试从yaml读取对象时,它会在其中一个模型上停止枚举并触发异常,如下所示:

play.exceptions.JavaExecutionException: Parameter value [OPEN] was not matching type  [enumerations.OrderStatus]
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:229)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: Parameter value [OPEN] was not matching  type [enumerations.OrderStatus]
    at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:360)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:435)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:72)
    at play.db.jpa.JPQL.bindParameters(JPQL.java:169)
    at play.db.jpa.JPQL.find(JPQL.java:46)
    at models.Order.find(Order.java)
    at controllers.Application._prepare(Application.java:52)
...

我不是修改枚举。它“一直”是一样的。 我做错了什么?

ps.Enum没有映射到db,我认为它可能是问题的根源,但是你能否从架构的角度建议如何正确地做到这一点?我几乎是hibernate / jpa的新手

Upd1

它在onloading上发生了ocassionaly,这是yaml中崩溃的模型之一(你在这里看到没什么奇怪的):

models.users.GenUser(usr3):
    name: V
    phoneNumber: "1234567890"
    email: v@mail.com.not
    login: v
    password: "123"
    userStatus: ACTIVE

这里'userStatus'是一个枚举,其中包含可能值ACTIVE,BANNED和其他值。

我发现只有一个解决方案 - 用于模型的trop表,让hibernate重新创建它们(它们)。但有时由于关系,它更容易丢弃整个数据库,这是非常好的;(

0 个答案:

没有答案