JPA 2.1 프로젝트가 있으며 데이터베이스에는 2 개의 테이블이 있습니다. 나는 인터페이스 "UsedClasses.java"를 만들어 두 엔티티는 인터페이스를 구현해야했다. 즉,JPA 엔티티의 인터페이스에서 @NamedQuery 가져 오기
@Entity
@Table(name = "runRanges")
@NamedQuery(name = "RunRange.findAll", query = "SELECT r FROM RunRange r")
public class RunRange extends AbstractTimestampEntity implements UsedClasses, Serializable ....
및
@Entity
@Table(name = "users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User extends AbstractTimestampEntity implements UsedClasses, Serializable ...
나는 내가 NamedQuery을 잡아 인터페이스를 사용할 수 있는지 알고 궁금 어느 쪽의 실체에 대해서도. 클래스에 따라 결과 목록을 가져 오는 경우 달성하려는 작업.
public List<UsedClasses> getAllItems() {
open();
Query query = EntityManagerHandler.INSTANCE.getEntityManager().createQuery(UsedClasses.class.getResource(NamedQueries));
List<UsedClasses> aList = query.getResultList();
return aList;
}
당신은 그것을 할 수 있지만
NamedQuery
주석을 검색하기 위해 반사를 사용해야하고 당신이 당신의 예에서와 같이
UsedClasses
인스턴스가 아닌 인터페이스를 가질 필요가
첫 제안 사항 : 쿼리 쿼리 = EntityManagerHandler.INSTANCE.getEntityManager(). createQuery (UsedClasses.class.getResource (NamedQueries)); 이것은 작동하지 않습니다. 오류 메시지는 NamedQueries를 변수로 해석 할 수 없음을 나타냅니다. 두 번째 제안 : 쿼리를 생성하는 클래스에서 UsedClasses를 인스턴스화하지 않기 때문에이 메서드를 사용하는 방법을 이해할 수 없습니다. getNamedQueryForGetAll() 메소드를 호출하려면 어떻게해야합니까? – mkunkel
좋아, 내가 편집 할 때 질문에 대답했다. 죄송합니다. 하지만 이제 인스턴스에서 인터페이스가 어떤 클래스인지를 알 수 없습니다. – mkunkel