【发布时间】:2011-09-09 05:06:23
【问题描述】:
在我的项目中,我使用 JPA 2.0 和 eclipselink 实现,我遇到了以下问题:
我已经用布尔列定义了实体:
@Entity
public User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="USR_ID")
private Short id;
@Column(name="USR_NAME")
private String name;
@Column(name="USR_ACTIVE")
private boolean active;
.......
}
我想创建将返回所有活动用户的查询,如下所示:
从用户 u 中选择 u 其中 u.active = TRUE;
但是,如果我使用该查询,则会出现布尔值无法转换为 Short 的异常(数据库中的列存储为 smallint)。有没有正确的方法来编写这个查询?
谢谢
【问题讨论】:
-
您使用的是哪个 JPA 提供程序(即 Hibernate、EclipseLink、OpenJPA 等)?您使用的是哪个数据库供应商(MySQL、SQL Server、Oracle)?您使用的是什么 JDBC 驱动程序?
-
我使用 Eclipselink 作为 JPA 提供程序,使用 Derby 作为数据库和 Derby 客户端 jdbc 驱动程序,还使用 Spring 来创建 EntityManager、事务管理......还有一个问题,我忘记指定了JPA 供应商。添加
查询条件为 TRUE 后。 -
这里与 Derby/Hibernate 相同。但它适用于 MySQL。 :-)
标签: jpa-2.0 eclipselink jpql