이상한 나는 이것에 대해 간단한 것을 발견 할 수 없다. 나는 2 개의 엔티티를 가지고 있는데, 하나는 다른 엔티티이고 다른 하나는 서브 엔티티의 속성에 어떻게 접근 할 수 있는가?기준, 하위 클래스 속성에 액세스하는 방법
엔티티 1
@Getter
@Setter
@Entity
public class ObjectA{
String name;
String surname;
ObjectB B;
}
기업이
@Setter
@Getter
@Entity
ObjectB{
String family;
String range;
}
내가 원하는 것은 조건 검색을 familly 및 범위를 액세스 할 수있다, 그래서이 만든 :
public List<ObjectA> search(String name, String surname, String family, String range) {
Criteria c = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(ObjectA.class, "a");
if (!name.equals("")) {
c.add(Restrictions.eq("a.name", name));
}
if (!surname.equals("")) {
c.add(Restrictions.eq("a.surname", surname));
}
if (!family.equals("")) {
c.add(Restrictions.eq("a.B.family", family));
}
if (!range.equals("")) {
c.add(Restrictions.eq("a.B.range", range));
}
return c.list();
}
을name an d성에 액세스 할 수 있지만 가족과 범위는 액세스 할 수 없습니다. '속성을 확인할 수 없습니다' 어떻게해야합니까?
감사 = D
이 문서는 유용하지 않습니다. c (이미 살펴 봤습니다.) 그들은 실제로 별칭을 만드는 방법을 설명하지만 엔티티 구현을 표시하지 않습니다. 새끼 고양이는 무엇을 대표합니까? 이것이 하위 클래스의 이름입니까? – Eildosa
새끼 고양이는 Cat 클래스에 매핑 된 요소의 모음입니다. 귀하의 경우 그것은 다음과 같습니다 : if (! family.equals ("")) {c.createAlias ("B", "B"); c.add (Restrictions.eq ("a.B.family", family)); } – WeMakeSoftware
감사합니다. 결과적으로 다음과 같이 작동합니다. c.createAlias ("a.B", "subB"). add (Restrictions.eq ("subB.family", family)); – Eildosa