최대 절전 모드로 NamedQuery를 생성하는 데 문제가 있습니다. 문제는 주문에 표시되지 않는 도서 목록을 선택해야한다는 것입니다.Hibernate 명명 된 쿼리 (다른 엔티티에 나타나지 않는 엔티티의 모든 인스턴스 선택)
@Entity
@NamedQueries({ @NamedQuery(name = "Book.findAvailable",
query = "SELECT b FROM Book b WHERE b.id not in ????????") })
public class Book {
@Id
@GeneratedValue
private Long id;
......
및 주문 : 보시다시피
@Entity(name = "orders")
public class Order {
@Id
@GeneratedValue
private Long id;
@ElementCollection
private List<Book> items;
.....
, 나는 목록에 위해 내 책을 계속 내 클래스는 다음과 같이 보인다. 내가 필요로하는 질의는 어떤 순서로도 열등하지 않은 DB로부터 모든 책을 꺼내야한다. 도움을 주시면 감사하겠습니다. 많은 감사합니다.
잘 내가 할 수있는 간단한 일을 제안하고, 부울을 추가 열을 예약하고 적어도 하나의 주문 목록에 그 내용이 포함되어 있으면 해당 플래그를 true로 만듭니다. 그러면 나중에 플래그가 false 인 모든 책을 찾을 수 있습니다. 주문한 도서를 삭제할 때 원인은 확실치 않습니다. 해당 플래그를 거짓으로 만들기 전에 다른 순서 목록에 존재하는 경우 1을 확인하십시오. – AntJavaDev
글쎄, 좋은 생각입니다. 그리고 지금까지 구현 한 방법은 정확히 같습니다.) 내지도가 책의 가용성을 확인하기 위해 다른 부울 변수를 유지하는 것이 최선의 결정이 아니라고했지만. 더 좋은 방법은 책의 ID에 색인을 붙이고 namedquery를 통해 작업을 수행하는 것입니다. – DruidKuma