0
에 의해 확인 된 개체의 컬렉션의 회원 :사용하여이 같은 컬렉션의 일부가 아닌 개체의 집합을 반환하는 것을 시도하고 복합 키
TypedQuery<Extra> q = em
.createQuery(
"SELECT e FROM Extra e, Arrangement a WHERE "
+ "a.id = :arrid AND e NOT MEMBER OF a.extras",
Extra.class);
q.setParameter("arrid", a.getId());
return q.getResultList();
을하지만 밖으로 나쁜 SQL을 얻을 이 :
Caused by: org.h2.jdbc.JdbcSQLException: Subquery is not a single column query; SQL statement:
select extra0_.code as code427_, extra0_.edition_number as edition5_427_,
extra0_.totalCost as totalCost427_, extra0_.unitCost as unitCost427_,
extra0_.units as units427_ from extra_arrangements extra0_
cross join arrangements arrangemen1_
where arrangemen1_.id=? and
((extra0_.code, extra0_.edition_number) not in
(select extra3_.code, extra3_.edition_number
from arrangements_extra_arrangements extras2_, extra_arrangements extra3_
where arrangemen1_.id=extras2_.arrangements_id and
extras2_.extras_code=extra3_.code and
extras2_.extras_edition_number=extra3_.edition_number)) [90052-161]
것은이 다른 쿼리가 예상대로 작동한다는 것입니다 :
TypedQuery<Exhibitor> q = em.createQuery(
"SELECT e FROM Exhibitor e, Edition ed WHERE ed.number = :ednum AND "
+ "e NOT MEMBER OF ed.exhibitors",
Exhibitor.class);
q.setParameter("ednum", e.getNumber());
return q.getResultList();
유일한 차이 무관을
@Entity
@Table(name = "exhibitors")
public class Exhibitor implements Serializable, Comparable<Exhibitor> {
@Id
private int id;
@Column(length = 100)
private String code;
@ManyToMany
private List<Edition> edition;
...
}
추가 : 참가 업체는 추가 복합 키가있는 반면, 단일 열 ID를 가지고 g
@Entity
@Table(name="extra_arrangements")
public class Extra implements Serializable {
@EmbeddedId
private ExtraCode id;
private double unitCost;
private double units;
...
}
@Embeddable
public class ExtraCode implements Serializable {
private String code;
@ManyToOne
private Edition edition;
//Getters and setters omitted
}
내가 잘못하고 어떻게 고칠 수 있습니다 어떤 생각?
MySQL의 모든 것을 사용하여, 실제로 내 문제가 의도 한 작품으로! – Kjir