내가, 우리가 사람을 객체를 호출 한 :일부 필드가 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에 대한 지식은 일반적으로 지난 몇 개월 동안 기본적으로 독학 (Read, Google)되었습니다. 이것에 대한 어떤 도움이라도 대단히 감사 할 것입니다. 감사!!
당신을 말하는 것을에서
여기서 '표현'은 무엇입니까? –
@KalaiselvanA 죄송합니다. 내 잘못입니다. 나는 원래 코드를 모두 바꾸지 않았다. 기밀 유지를 위해 정확한 코드를 변경하고 내 개체를 예제 "Person"개체로 바꿨습니다. 나는 그것을 고쳤다, 고마워! – user2867999