gpt4 book ai didi

java - 使用 MySQL 在 Hibernate 中未正确映射 boolean 值

转载 作者:可可西里 更新时间:2023-11-01 09:02:35 26 4
gpt4 key购买 nike

我正在尝试通过 resultSetTransformer 将 MySQL 数据库中存在的查询(返回 TRUE/FALSE)的结果映射到 POJO。我希望这个存在查询的结果可以映射到一个 boolean 值,但它没有并抛出以下错误:

org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of TestBean.value

出现该异常的原因如下:

java.lang.IllegalArgumentException: argument type mismatch


我的示例类:

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 驱动程序的错误?

hibernate 版本: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();

关于java - 使用 MySQL 在 Hibernate 中未正确映射 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36994153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com