У меня есть эти классы:
@Entity
public class Invoice implements Serializable {
@Id
@Basic(optional = false)
private Integer number;
private BigDecimal value;
//Getters and setters
}
@Entity
public class InvoiceItem implements Serializable {
@EmbeddedId
protected InvoiceItemPK invoiceItemPk;
@ManyToOne
@JoinColumn(name = "invoice_number", insertable = false, updatable = false)
private Invoice invoice;
//Getters and setters
}
Когда я запускаю этот запрос:
session.createQuery("select i from InvoiceItem i").list();
Он выполняет один запрос для выбора записей из InvoiceItem, и если у меня есть 10 000 элементов счета, он создает 10 000 дополнительных запросов для выбора счета из каждого элемента счета.
Я думаю, было бы намного лучше, если бы все записи можно было получить в одном sql. На самом деле, мне кажется странным, почему это не поведение по умолчанию.
Итак, как я могу это сделать?