私は、我々は人それをオブジェクトを呼び出しますしている:いくつかのフィールドがNULLの場合、JPAでcriteriaqueryの述部としてオブジェクトを使用できますか?
@Entity
@Table(name = "PERSON")
public class Person extends PersistentObject {
@Id
@Column(name = "NAME")
private String name;
@Column(name = "AGE")
private String age;
@Column(name = "NICKNAME")
private String nickname;
@Column(name = "HAIR_COLOR")
private String hairColor;
.
.
.
私は述語を使用してCriteriaQuery上のフィルタとしてこのオブジェクトを使用したいが、入力の一部objがnullであるとき(例えば、ニックネーム)クエリが中断されます。ここに私が今持っているコードの例があります。
public List<Person> getPeople(List<Person> peopleToGet)
{
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Person> cq = cb.createQuery(Person.class);
Root<Person> e = cq.from(Person.class);
List<Predicate> predicates = new ArrayList<Predicate>();
for(Person person : peopleToGet)
{
predicates.add(cb.or(cb.and(
cb.equal(e.get("name"), person.getName()),
cb.equal(e.get("age"), person.getAge()),
cb.equal(e.get("nickname"), person.getNickname()),
cb.equal(e.get("hairColor"), person.getHairColor())
)));
.
.
.
オブジェクトの値が常に同じではない場合、オブジェクトをフィルタとして使用できますか?
例入力:[{ "名前": "ボブ"、 "年齢": "30"}、{ "名前": "ウィリアム"、 "愛称": "ビル"}]これで
たとえば、私はPERSONテーブル内のすべての人を取得したい:人物名はボブです と年齢が30 あるまたは人の名前はウィリアムであり、この例では少し不明確である場合ニックネームは申し訳ありませんが、ビル
あり、他の例に翻訳するのができるだけ簡単になるようにコードを変更しました。私のJPAに関する知識は、一般的には、過去数ヶ月にわたり、基本的に独学(基本的にはGoogle)されています。これに対する援助は非常に高く評価されます。ありがとう!!
ここでは「表現」とは何ですか? –
@KalaiselvanA申し訳ありませんが、私のせいです。私は元のコードをすべて変更していませんでした。機密性の理由から、私は正確なコードを変更し、私のオブジェクトを "Person"オブジェクトの例に置き換えました。私はそれを固定しました、ありがとう! – user2867999