相关疑难解决方法(0)

Enum in Hibernate,坚持作为枚举

在我的MySQL数据库中,有"性别枚举('男性','女性')"

我创建了我的枚举"com.mydomain.myapp.enums.Gender",在我的Person实体中我定义了"性别性别".

现在我想在我的MySQL数据库中保留枚举类型,但是当我启动我的应用程序时,我得到:

MyApp.Person中的列类型为Sex的列错误.找到:枚举,预期:整数

为什么是这样?这就好像我用"@Enumerated(EnumType.ORDINAL)"注释了我的"性别性别",我没有.EnumType似乎只能是ORDINAL或STRING,那么如何指定它应该将字段视为枚举,而不是int?(并不是说有太大的不同,但足以让它对此感到不安.)

java mysql orm enums hibernate

39
推荐指数
4
解决办法
7万
查看次数

如何在数据库中处理没有枚举字段的枚举?

如何在不支持枚举的数据库中实现枚举字段?(即SQLite)

需要使用" field=?" 轻松搜索字段 所以使用任何类型的数据序列化是一个坏主意.

enums database-design

18
推荐指数
1
解决办法
7906
查看次数

MySQL ENUM VS INT

我有几个表可以是ENUM类型或INT类型的列.我倾向于总是使用整数类型,假设基于它执行搜索会更快.

例如我的表中的一个具有列:StatusType其可具有仅4个可能的值:Completed,In Progress,Failed,Todo.

而不是将上面存储为ENUM字符串,我将它们存储为:

1,2,3,4分别.然后在我的PHP代码中,我有常量变量来定义这些值,如下所示:

define('COMPLETED', 1);
define('IN_PROGRESS', 2);
define('FAILED', 3);
define('TODO', 4);
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,我是以正确的方式做的还是我应该将其更改为ENUM类型并使用字符串来比较查询?我有许多其他列只能有一组最大4-5可能值.

php mysql

11
推荐指数
2
解决办法
4949
查看次数

参数值与预期类型不匹配

我有一个列表中的枚举(例如)

enum State
{
   UP,
   DOWN,
   RETRY
};
Run Code Online (Sandbox Code Playgroud)

我的数据库中的列是enum类型.当我尝试通过在查询中设置参数来执行Hibernate查询时setParameter("keyword", State.RETRY);,我收到错误

参数值[RETRY]与预期类型[package.name.State(n/a)]不匹配

在我的域的Glassfish 4.1 server.log中.我正在使用Hibernate 4.3.6.

在寻找对Hibernate的源代码,我看到发生了错误,因为线958-960org.hibernate.jpa.spi.BaseQueryImpl:

private static boolean isValidBindValue(Class expectedType, Object value, TemporalType temporalType) {
        if ( expectedType.isInstance( value ) ) {
            return true;
        }
...
return false;
}
Run Code Online (Sandbox Code Playgroud)

isValidBindValue 返回false,因此我收到消息.

由于这一行,它打印出String相应的enum值:

String.format("Parameter value [%s] did not match expected type [%s (%s)]",
               bind,
               parameterType.getName(),
               extractName( temporalType )
             )
Run Code Online (Sandbox Code Playgroud)

bind目的是通过调用隐式转换为字符串值toString的方法Object,它表示enum State.RETRY.

那我怎么能说服Hibernate这 …

java hibernate classloader glassfish-4

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

enums ×2

hibernate ×2

java ×2

mysql ×2

classloader ×1

database-design ×1

glassfish-4 ×1

orm ×1

php ×1