My jpql "where句"は、タイムスタンプ列を使用して選択すると、期待どおりに "フィルタリング"しません。EclipseLink jpql "where句"比較タイムスタンプが期待通りに機能していません
タイムスタンプの「日付」部分には敏感ですが、「時刻」部分は無視されます。
table1.tmstmp列は次のように定義されますTABLE1エンティティは次の名前付きクエリを含む "TMSTMP TIMESTAMP NOT NULL"
...
@NamedQuery(name = "table1.getUpdTime", query = "SELECT e FROM table1 e
WHERE e.tmstmp >= :tmstmp order by e.tmstmp asc")
tmstmpプロパティは、次のように定義されます。.. 。
@Column(name = "TMSTMP", nullable = false)
private Timestamp tmstmp;
それはこのように使用されている...
TypedQuery<EsEvnt> query = em.createNamedQuery("table1.getUpdTime",
table1.class).setParameter("tmstmp", tmstmp);
たとえば、上記のタイムスタンプ変数( "tmstmp")が "2016-06-30T09:28:33.247-04:00"の場合、日付部分が2016-06のすべてのレコードが返されます-30。
アイデア?
タイムスタンプ全体を使って明示的に選択する "where句"に依存したいと思います。
ありがとうございます!
UPDATE
私は私のクエリを(ネイティブクエリが必要とされたように見えた)を以下に示し、一貫して動作するように見えるとして、 "CAST" 機能を使用して変更...
//...note, date is in ISO format...
LocalDateTime ldt = LocalDateTime.parse(tmstmpString, DateTimeFormatter.ISO_DATE_TIME);
Timestamp tmstmp = Timestamp.valueOf(ldt);
-
-
-
// (see "native query", coded below)...
Query query = em.createNativeQuery("SELECT * FROM table1 e WHERE e.tmstmp >= CAST(?1 as TIMESTAMP)", Table1.class)
.setParameter(1, tmstmp);
List<Table1> resultList = query.getResultList();
ありがとう! :)
のWebLogic 12.1.3
DB2
のJava 8
のEclipseLink 2.1
「tmstmp」フィールドは実際には「タイムスタンプ」ですか? 'java.sql.Date'は時、分、秒を0に設定します。 –
はい、" tmstmp "はタイプです:タイムスタンプ。頼むためのthx! – sairn