JPA, Hibernate, DB2: JPQL-Query and char column



我正在使用带有休眠功能的 JPA,并且在以下 JPQL 查询中遇到了一些问题

final Query query = getEntityManager().createQuery(
            "select u from User u where u.username = :username")
query.setParameter("username", "a"); 

使用 DB2 V9.7 数据库时,即使存在用户名为"a"的用户,查询也会导致 NoResultException。仅当具有用户名的列具有 char 类型时,才会发生此问题。如果我将列类型更改为 varchar,就像 hibernate 会自己生成它一样,查询工作正常。

有什么想法吗?

附上一些配置信息:

  • 休眠版本:3.6.10.最终版
  • JDBC 驱动程序:db2jcc 3.61.65
  • 方言: org.hibernate.dialect.DB2Dialect
  • 字段声明:
     @Column(名称 = "USER_NAME",长度 = 50)     @NotNull     @Size(最大值 = 50)     私有字符串用户名;    
  • 用户类型声明 @TypeDef(name = "trimmedString", defaultForType = String.class, typeClass = TrimmedStringUserType.class)

Hibernate将字符串映射到VARCHAR类型。这里对此进行了解释

http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/types.html

要确保它映射到 char,您需要使用自定义 db2 方言进行指定,如此处所述。

JPA/Hibernate DDL 生成;查尔 vs. 瓦尔查尔

最新更新