在JPA中,我如何将Y N绑定到布尔类型

时间:2016-04-19 08:58:24

标签: jpa

是否可以使用JPA注释将布尔变量绑定到MySQL中的VARCHAR(1)Y / N?

我正在使用以下映射@Basic @Column(name = "IS_ACTIVE", columnDefinition = "VARCHAR", length = 1) private Boolean active;

抛出异常

java.lang.IllegalArgumentException: Parameter value [A] did not match expected type [java.lang.Boolean (n/a)]

所以我弄清楚了错误的原因,那是因为我正在过去' Y'作为命名查询的参数。

params.put("isActive", "Y");

但现在我把它改成了

params.put("isActive", Boolean.TRUE);

查询没有返回任何结果,似乎它已经过了真正的'作为查询的参数。

有人可以告诉我如何正确地映射这个吗?

<dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-all-6.0</artifactId>
        <version>3.0.0.Final</version>
        <scope>provided</scope>
    </dependency>

1 个答案:

答案 0 :(得分:2)

最安全的方法是定义一个AttributeConverter,它将Boolean映射到String并映射到&#34; Y&#34;或&#34; N&#34;。然后定义您的布尔字段以使用AttributeConverter