ORACLE - пружинные данные jpa с нулевым параметром запроса - PullRequest
0 голосов
/ 17 мая 2018

У меня 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...