同じ型の値を内包している、2つのクラスの比較をすることは可能でしょうか? #1472
-
|
※同じ内容で #962 がありますが、そちらが回答済みの状態だったため新しく投稿させていただきます。 いつも楽しく Doma を利用させていただいております! Criteria APIで検索をするとき、プロパティメタモデルと検索値で、値の型は同じなもののクラスとしては違う型を使いたい場面があります。 コードにすると以下のようなイメージです。 @DataType
record SomeDate(LocalDate localDate) {
public SomeDate {
if(localDate.getDayOfMonth() < 5 || 10 < localDate.getDayOfMonth()){
throw new IllegalArgumentException("5日 ~ 10日のみ入力可能です。");
}
}
}
@Entity(immutable = true, metamodel = @Metamodel)
record Member(
@Id Long id,
SomeDate someDate){
}
// 型不一致のためエラーになりますが、これを実現したいです。
List<Member> search(LocalDate searchedOn){
final QueryDsl queryDsl = null; // 割愛します。
final var member_ = new Member_();
return queryDsl
.from(member_)
.where(c -> c.le(member_.someDate, searchedOn))
.fetch();
}
// ビジネスルールの都合上、このような対応はできません。
List<Member> search(LocalDate searchedOn){
final QueryDsl queryDsl = null; // 割愛します。
final var member_ = new Member_();
return queryDsl
.from(member_)
.where(c -> c.le(member_.someDate, new SomeDate(searchedOn))) // コンパイルエラーはなくなりますが、5 ~ 10日以外で検索すると実行時エラーになります。
.fetch();
}過去のQAで同様の質問があったため、現時点では未サポートであることは承知しております。 |
Beta Was this translation helpful? Give feedback.
Answered by
nakamura-to
Nov 13, 2025
Replies: 1 comment 4 replies
-
|
ここ数日時間が取れないので週末にコメントしますね |
Beta Was this translation helpful? Give feedback.
4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
次のようなユーティリティメソッドの作成により希望されている挙動を実現できます。
このユーティリティメソッドは、次のように利用します。