Wenn Sie in Hibernate ein Entity über einen Ladevorgang abrufen, wird der Proxy nicht initialisiert, wenn Sie auf den id-Accessor des Entitys zugreifen:
Property myProp = (Property) session.load(Property.class, myId);
myProp.getId(); // Doesn't load the proxy
myProp.getDescription(); // Loads the proxy from the database hit
Mir ist jedoch nicht klar, wie die Regeln für das Laden von Vertretungen von Vereinigungen aussehen. Ich hatte den Eindruck, dass beim Abrufen einer Entität über eine HQL-Abfrage oder ein Kriterium die gleichen Regeln gelten.
Jede Property
in meinem Code hat eine Company
. Die Company
als solche deklariert ist:
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "company_id", nullable=false)
private Company company;
In meinem Code erhalte ich jedoch derzeit N+1 Selects, wenn ich durch die Properties
weil die Company
geladen wird, wenn ich die Company.getId()
.
Sowohl in der Company
y Property
Objekt ist das Feld id ein Long mit der Anmerkung @Id
.
Gibt es noch eine andere Überlegung, die ich vermisse, um das Laden der Company
Wesen?