JPA,Hibernate,DB2:JPQL-Query和char列

时间:2012-12-03 17:38:25

标签: hibernate char db2 jpql dialect

我正在使用带有hibernate的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会自己生成它,查询工作正常。

有什么想法吗?

附上一些配置信息:

  • hibernate版本:3.6.10.Final
  • jdbc驱动程序:db2jcc 3.61.65
  • dialect:org.hibernate.dialect.DB2Dialect
  • 现场声明:
     @Column(name = "USER_NAME", length = 50)
     @NotNull
     @Size(max = 50)
     private String username;
    
  • 用户类型声明 @TypeDef(name = "trimmedString", defaultForType = String.class, typeClass = TrimmedStringUserType.class)

1 个答案:

答案 0 :(得分:0)

Hibernate将String映射到VARCHAR类型。这在这里解释

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

要确保它映射到char,您需要在此处提到的自定义db2方言中指定。

JPA/Hibernate DDL generation; CHAR vs. VARCHAR