预期的数据类型不一致DATE得到了BINARY Hiberante Spring Data JPA

时间:2015-07-18 06:52:34

标签: spring oracle hibernate jpa

 <named-query name="Category.getids1">
    <query>
    <![CDATA[
        SELECT spov.versionId
        FROM SpecificationCategoryVersion spov
        WHERE ?1 is null OR spov.releaseDate is null]]>         
    </query>
</named-query>

<named-query name="Category.getids2">
    <query>
    <![CDATA[
        SELECT spov.versionId
        FROM SpecificationCategoryVersion spov
        WHERE ?1 is null OR spov.releaseDate <=  ?1         
        ]]>         
    </query>
</named-query>

<named-query name="Category.getids3">
    <query>
    <![CDATA[
        SELECT spov.versionId
        FROM SpecificationCategoryVersion spov
        WHERE ?1 is null OR spov.releaseDate is null OR spov.releaseDate <=  ?1         
        ]]>         
    </query>
</named-query>

   @Repository("specificationCategoryRepository")
   public interface SpecificationCategoryRepository extends
   JpaRepository<SpecificationCategory, Long>{
   ...

  @Query(name = "Category.getids1")
List<String> getIds1(Date validOn);

@Query(name = "Category.getids2")
List<String> getIds2(Date validOn);

@Query(name = "Category.getids3")
List<String> getIds3(Date validOn);

}

当使用null调用三个方法时,getIds1按预期工作,

但getIds2,getIds3提出以下抱怨:

SQL Error: 932, SQLState: 42000
ORA-00932: inconsistent datatypes: expected DATE got BINARY

令人惊讶的是,各自的原生SQL:

select specificat0_.VERSION_ID as col_0_0_  
from SPEC_CATEGORY_VERSION specificat0_ 
where ? is null or specificat0_.RELEASE_DATE<=?

select specificat0_.VERSION_ID as col_0_0_ 
from SPEC_CATEGORY_VERSION specificat0_ 
where ? is null 
    or specificat0_.RELEASE_DATE is null 
    or specificat0_.RELEASE_DATE<=?

在&#39;?&#39;被替换为null。

顺便说一下, SPEC_CATEGORY_VERSION.RELEASE_DATE 可以为空

环境

数据库: Oracle Database 12c企业版12.1.0.2.0版 - 64位生产 PL / SQL版本12.1.0.2.0 - 生产 &#34;核心12.1.0.2.0生产&#34; 适用于Linux的TNS:版本12.1.0.2.0 - 生产 NLSRTL版本12.1.0.2.0 - 生产

爪哇: java版&#34; 1.7.0_07&#34; Java(TM)SE运行时环境(版本1.7.0_07-b10) Java HotSpot(TM)64位服务器VM(版本23.3-b01,混合模式)

服务器:红帽JBoss企业应用平台 - 版本6.3.3.GA

方言:HHH000400:使用方言:org.hibernate.dialect.Oracle10gDialect

版本:HV000001:Hibernate Validator 4.3.1.Final-redhat-1

在这方面的任何帮助都将非常受欢迎。

0 个答案:

没有答案