列の1つとして予約日を持つ予約テーブルがあります。JPA を使用して、appengine データストア内の 2 つの日付の間のすべての予定を取得したいと考えています。これを達成する方法を教えてください。次のクエリで試しましたが、うまくいきませんでした。
(apptSts='p' または apptSts='a') および (apptDate>=:fromDate または apptDate<=:toDate) の予定 a から a を選択します。
列の1つとして予約日を持つ予約テーブルがあります。JPA を使用して、appengine データストア内の 2 つの日付の間のすべての予定を取得したいと考えています。これを達成する方法を教えてください。次のクエリで試しましたが、うまくいきませんでした。
(apptSts='p' または apptSts='a') および (apptDate>=:fromDate または apptDate<=:toDate) の予定 a から a を選択します。
プロパティをリスト プロパティとして作成します。次に、2 つの日付の間でクエリを実行できます。Objectify で実行された次のテスト コードを参照してください。JPAでも同じ手法を使用できると思います。 https://github.com/stickfigure/objectify/blob/master/src/test/java/com/googlecode/objectify/test/QueryExoticTypesTests.java
2 つの日付間の予定を取得するには、クエリ ロジックを変更して、 "または"の代わりに"と"を含める必要があります。
select a from Appointment
where apptDate>=fromDate and apptDate<=toDate
appengine の同じプロパティに不等式ファイラーを含めることはできますが、OR と組み合わせることはできません。
gql リファレンスの例を参照してください。これは JPA にも適用されます。
複数の不等式を適用できますが、それらは同じフィールド (変数) にある必要があります。ここで間違っているのは、アプリ エンジンでブラケットの使用が許可されていないことです。
(conditionA AND conditionB .....) OR (conditionC AND conditionC .....)
//--this is not allowed.
ちなみに以下は許可されています(私はそれを試しました)
(conditionA AND conditionB .....) AND (conditionC AND conditionC)
//--allowed(although its bracket are meaning less here)
大なりまたは小なりクエリは 1 つしか実行できないため、実行する 1 つの方法は、大なりクエリを実行し、結果を確認して、小なりクエリに一致しないものを手動で除外することです。