在应用程序中,我在Spring Data JPA Repository中有这个查询,指向Oracle 10g数据库:
@Query("select a.AETTELE_CDAT from Aettele a "
+ "where a.AETTELE_CARG = :carg and a.AETTELE_CTAB = :ctab and a.AETTELE_DDATSCA >= :dataValidita and a.AETTELE_DDATVAL <= :dataValidita and a.AETTELE_CIST = :institute")
public String findByCargAndCtab(@Param("carg") final String carg, @Param("institute") final String institute,
@Param("ctab") final String ctab, @Param("dataValidita") final String dataValidita);
根据hibernate.show-SQL,转换为此查询:
select aettele0_.AETTELE_CDAT as col_0_0_ from Aettele aettele0_ where aettele0_.AETTELE_CARG=? and aettele0_.AETTELE_CTAB=? and aettele0_.AETTELE_DDATSCA>=? and aettele0_.AETTELE_DDATVAL<=? and aettele0_.AETTELE_CIST=?
我在查询之前停止执行上述应用程序,并手动将参数(从我的应用程序中的实时数据中取出)复制粘贴到查询中,然后看起来像这样:
select aettele0_.AETTELE_CDAT as col_0_0_ from Aettele aettele0_ where aettele0_.AETTELE_CARG='03268' and aettele0_.AETTELE_CTAB='0001' and aettele0_.AETTELE_DDATSCA>='2016-12-19' and aettele0_.AETTELE_DDATVAL<='2016-12-19' and aettele0_.AETTELE_CIST='*****';
然后,我在数据库客户端上执行了查询,并在应用程序上跳过查询。 在第一种情况下,查询返回结果。在第二种情况下,它返回NULL。 数据库显然是一样的。我认为这是Spring Data JPA中参数转换的一个问题,但是无法准确指出。有没有人有任何想法?
提前致谢。
编辑:所有参数都是Java端的STRING和Oracle端的CHAR。