私はこれらのクラスを持っています:
@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 からレコードを選択するために 1 つのクエリを実行し、10000 の請求書アイテムがある場合、各 InvoiceItem から請求書を選択するために 10000 の追加クエリを生成します。
すべてのレコードを 1 回の SQL でフェッチできれば、もっと良いと思います。実際、なぜそれがデフォルトの動作ではないのか不思議に思います。
それで、どうすればそれを行うことができますか?