У меня 3 запроса:
1
@Query(value = "select * from ACCOUNT_TRANSACTION at where
at.TRANS_DATETIME >= coalesce(:#{#fromDate}, at.TRANS_DATETIME)",
nativeQuery = true)
2
@Query(value = "select * from ACCOUNT_TRANSACTION at where
(:#{#fromDate} is null or at.TRANS_DATETIME >= :#{#fromDate}) ",
nativeQuery = true)
3.
@Query(value = "select at from AccountTransaction at where
:#{#fromDate} is null or at.transDatetime >= :#{#fromDate} ")
Запрос 1,2 не работает с сообщением об ошибке:
ORA-00932: несовместимые типы данных: ожидаемая ДАТА получила Двоичный.
Запрос 3 работает!
Колонка:
@XmlElement(name = "transDatetime")
@XmlJavaTypeAdapter(DateAdapter.class)
private Date transDatetime;
@Basic
@Column(name = "TRANS_DATETIME")
public Date getTransDatetime() {
return transDatetime;
}
public void setTransDatetime(Date transDatetime) {
this.transDatetime = transDatetime;
}
Можете ли вы показать мне, где я не прав в 1,2. Спасибо!
Обновлен:
4
@Query(value = "SELECT * FROM ACCOUNT_TRANSACTION at WHERE at.TRANS_DATETIME >= (CASE WHEN :#{#fromDate} is null then at.TRANS_DATETIME ELSE :#{#fromDate} END )", nativeQuery = true)
Я пытался на случай, когда запрос, но не работает.
Кажется, родной запрос вообще не работает.
Решено:
http://betterlogic.com/roger/2012/03/java-sql-sqlsyntaxerrorexception-ora-00932-inconsistent-datatypes-expected-number-got-binary/