我正在使用SQL查询,然后使用Hibernates的转换结果Transformers.aliasToBean()
。我的查询中的一列是枚举。对于枚举,转换以某种方式失败了。我该怎么办?我应该使用哪种数据类型?我想要多个字符将结果转换为我的枚举类型。
这是我的查询/代码的简化版本的样子( b 是表配置文件中的枚举):
session.createSQLQuery("select a, b from profiles").setResultTransformer(Transformers.aliasToBean(Profile.class))
.list();
例外情况: expected type: Foo.ProfileStateEnum, actual value: java.lang.Character
假设与列b对应的Java枚举类型为Foo.ProfileStateEnum,则以下代码段将为您工作。(我使用Hibernate 4.1.6进行了测试)
import java.util.Properties;
import org.hibernate.type.Type;
import org.hibernate.type.IntegerType;
import org.hibernate.internal.TypeLocatorImpl.TypeLocatorImpl;
import org.hibernate.type.TypeResolver.TypeResolver;
import org.hibernate.type.EnumType;
Properties params = new Properties();
params.put("enumClass", "Foo.ProfileStateEnum");
params.put("type", "12"); /*type 12 instructs to use the String representation of enum value*/
/*If you are using Hibernate 5.x then try:
params.put("useNamed", true);*/
Type myEnumType = new TypeLocatorImpl(new TypeResolver()).custom(EnumType.class, params);
List<Profile> profileList= getSession().createSQLQuery("select a as ID, b from profiles")
.addScalar("ID", IntegerType.INSTANCE)
.addScalar("b", myEnumType )
.setResultTransformer(Transformers.aliasToBean(Profile.class))
.list();
问题内容: 我有一个主枚举类,它本质上是一种对象类型的类定义。例如,它看起来像下面的示例: 我正在尝试建立一个Javascript模型的发布请求,该请求在主体中发送一个映射,例如 到使用 而我得到以下错误信息: 不能建立从字符串“红”型ColorDefinition的地图键:不是一个有效的表示:不能建立从字符串“红”型ColorDefinition的地图键:对于Enum类值不是一个 什么我在这里做
主要内容:强制对象类型转换将一个类型强制转换成另一个类型的过程被称为类型转换。本节所说的 对象类型转换,是指存在继承关系的对象,不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时,会抛出 Java 强制类型转换(java.lang.ClassCastException)异常。 Java 语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。Java 中引用类型之间的类型转换(前提是两个类
你好,我正在用JavaSpring Boot做一个“CRUD网络应用程序”,我正试图将我的“CRUD网络应用程序”按钮功能从一个新页面更改为一个模态,我遇到了问题。 首先,当我单击“编辑”按钮时,我的表单没有填充它从数据库获得的数据,第二,当我单击“保存”时,它会向我显示此消息。 无法转换“java”类型的值。lang.String'转换为所需类型“long”;嵌套的异常是java。lang.Nu
数字字面量可以加上类型标记作为后缀来标注类型。举个例子,要指定字面量 42 为 i32 类型,可以写成 42i32。 未加上后缀的数字字面量的类型视使用它们的情况而定。如果没有限定,编译器会将整型定为 i32 类型,将浮点数定为 f64 类型。 fn main() { // 有后缀的字面量,它们的类型在初始化时就确定 let x = 1u8; let y = 2u32;
本文向大家介绍把对象转换到数字类型是如何转换的?相关面试题,主要包含被问及把对象转换到数字类型是如何转换的?时的应答技巧和注意事项,需要的朋友参考一下 1、如果对象有valueOf方法,则调用该方法,并返回相应的结果; 2、当调用valueOf返回的依然不是数字,则会调用对象的toString方法,并返回相应的结果; 3、否则抛出异常。
我使用jOOQ和Postgreql从表中选择枚举值。 不管怎样,我得到了一个例外: 我看到将返回