我正在尝试将存在查询的结果(返回 TRUE/FALSE)从 MySQL 数据库映射到 POJO 通过结果集转换器。我希望这个存在查询的结果可以映射到布尔值,但它没有并抛出以下错误:
org.hibernate.PropertyAccessException:IllegalArgumentException
调用 TestBean.value 的 setter 时发生
出现该异常的原因如图:
java.lang.IllegalArgumentException:参数类型不匹配
我的样本班:
public class TestHibernate {
private static SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
public static void main(String[] args) throws ParseException {
try {
Query query = sessionFactory.openSession().createSQLQuery(
"SELECT " +
"EXISTS (SELECT * FROM A WHERE id = 3) AS value"
);
query.setResultTransformer(Transformers.aliasToBean(TestBean.class));
List<TestBean> beanList = (List<TestBean>) query.list();
} catch (Exception e) {
System.out.println(e);
}
}
}
POJO:
public class TestBean {
private boolean value;
public boolean isValue() {
return value;
}
public void setValue(boolean value) {
this.value = value;
}
}
我是否遗漏了某些内容,或者是 Hibernate 或 MySQL JDBC 驱动程序的错误?
休眠版本:3.2.6GA
MySQL JDBC 驱动程序:mysql-connector-java-5.1.2
Hibernate 有一个内置的“yes_no”类型,可以执行您想要的操作。它映射到数据库中的 CHAR(1) 列。
基本映射:
<property name="some_flag" type="yes_no"/>
注解映射(Hibernate 扩展):
@Type(type="yes_no")
public boolean getFlag();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)