我有作用的實體類:(playframework 2.0.2-JAVA)EBean - 用枚舉查詢時,沒有ScalarType註冊的誤差值
@Entity
public class Role extends Model {
@Id
@Constraints.Required
public Integer id;
@Constraints.Required
@Formats.NonEmpty
@Enumerated(EnumType.STRING)
public RoleNameEnum name; // name is enum value
}
在某些測試中,我試圖通過角色來找到用戶:
List<User> users = User.findByRole(Role.findByRoleName(RoleNameEnum.ADMIN));
其中方法findByRoleName()
是以下:
public static List<User> findByRole(Role role) {
return find.where().eq("role", role).findList();
}
我收到錯誤:
[error] Test UserTest.findUsersByRole failed: No ScalarType registered for class models.Role
[error] at com.avaje.ebeaninternal.server.persist.Binder.bindObject(Binder.java:183)
[error] at com.avaje.ebeaninternal.server.query.CQueryPredicates.bind(CQueryPredicates.java:162)
[error] at com.avaje.ebeaninternal.server.query.CQuery.prepareBindExecuteQuery(CQuery.java:413)
[error] at com.avaje.ebeaninternal.server.query.CQueryEngine.findMany(CQueryEngine.java:198)
[error] at com.avaje.ebeaninternal.server.query.DefaultOrmQueryEngine.findMany(DefaultOrmQueryEngine.java:104)
[error] at com.avaje.ebeaninternal.server.core.OrmQueryRequest.findList(OrmQueryRequest.java:344)
[error] at com.avaje.ebeaninternal.server.core.DefaultServer.findList(DefaultServer.java:1469)
[error] at com.avaje.ebeaninternal.server.querydefn.DefaultOrmQuery.findList(DefaultOrmQuery.java:906)
[error] at com.avaje.ebeaninternal.util.DefaultExpressionList.findList(DefaultExpressionList.java:201)
[error] at models.User.findByRole(User.java:63)
[error] at UserTest$4.run(UserTest.java:62)
[error] at play.test.Helpers.running(Helpers.java:294)
[error] at UserTest.findUsersByRole(UserTest.java:58)
有沒有人有一個想法可能是什麼問題?
我懷疑有查詢條件的問題:'find.where()EQ( 「角色」,角色)' – TOUDIdel 2012-08-14 20:40:15
Cześć,向我們展示用戶模型(編輯:向我們展示所有模型,或許在github上?) – biesior 2012-08-14 20:45:41
@biesior:用戶模型:http://pastebin.com/rLmMMAEr – TOUDIdel 2012-09-05 12:27:36