[JPA에러]Cannot
create TypedQuery for query with more than one return using requested result
type
[엔티티]
@Entity
@Getter
@Setter
@NamedQuery(name="Emp.findBySalNamed",
query="select e.empno, e.ename from Emp e where e.sal >
:sal")
public
class Emp {
@Id
@GeneratedValue
private Long empno;
private String ename;
private String job;
private Long sal;
@ManyToOne
@JoinColumn(name =
"deptno")
private Dept dept;
}
자바코드에서...
List<Emp>
result = em.createNamedQuery("Emp.findBySalNamed", Emp.class)
.setParameter("sal", 2000)
.getResultList();
JPQL
또는 NamedQuery의 쿼리구문에서 리턴결과 타입을 클래스타입으로 하고 위의 경우처럼
필드명을
쓴 경우 타입이 여러개라는 오류가 발생한다.
(Cannot
create TypedQuery for query with more than one return using requested result
type)
Select되는
결과 타입을 Emp.class로 했으면 다음과 같이 NamedQuery를 수정해야 한다.
@NamedQuery(name="Emp.findBySalNamed",
query="select e from Emp e where e.sal > :sal")
물론
JPQL을 직접사용했을 때도 동일하다.
String
someJPQL = "select e.empno, e.ename from Emp e where e.sal > :sal";
em.createQuery(someJPQL,
Media.class);
=>
String
someJPQL = "select e from Emp e where e.sal > :sal";
댓글 없음:
댓글 쓰기