我正在使用@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重新创建它们(它们)。但有时由于关系,它更容易丢弃整个数据库,这是非常好的;(