在 JPA 中,我如何将 Y N 绑定到布尔类型
Posted
技术标签:
【中文标题】在 JPA 中,我如何将 Y N 绑定到布尔类型【英文标题】:In JPA how can i bind Y N to Boolean type 【发布时间】:2016-04-19 08:58:23 【问题描述】:是否可以使用 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);
查询没有返回任何结果,它似乎将“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】:最安全的方法是定义一个AttributeConverter
,它将布尔值映射到字符串并映射到“Y”或“N”。然后定义您的布尔字段以使用该AttributeConverter
。
【讨论】:
@Convert 不可用,这是哪个库的一部分? 标准 JPA 2.1 的一部分,链接页面告诉您 我正在使用 jboss 6 EAP,它应该拥有一切,请查看具有 maven 依赖关系的更新帖子。这不包含所需的依赖项吗? 检查你的依赖内容不是我的“工作”。您应该知道您使用的是 JPA 1、JPA 2.0、JPA 2.1。 JavaEE6 可能是 JPA 2.0。但是你应该把它放在问题中,这样人们就有回答的基础以上是关于在 JPA 中,我如何将 Y N 绑定到布尔类型的主要内容,如果未能解决你的问题,请参考以下文章
使用 JPA 和 Hibernate 将 Java 布尔值映射到 Oracle Number 列