Wenn Sie eine Entität ändern möchten, können Sie die Instanz suchen, die Instanz und alle referenzierten Entitäten aktualisieren und anschließend die Transaktion festschreiben.
public static void updateCustomerOrder(EntityManager em) {
em.getTransaction().begin();
Order order = (Order) em.find(Order.class, "ORDER_1");
processDiscount(order, 10);
Customer cust = order.customer;
cust.phoneNumber = "5075551234";
em.getTransaction().commit();}
public static void processDiscount(Order order, double discountPct) {
for(OrderLine line : order.lines) {
line.price = line.price * ((100-discountPct)/100);
}
}
Bei der Ausführung der Flush-Operation für die Transaktion
werden alle verwalteten Entitäten mit dem Cache synchronisiert.
Beim Festschreiben einer Transaktion wird automatische eine Flush-Operation ausgeführt.
In diesem Fall wird die Order-Instanz zu einer verwalteten Entität.
Alle von Order, Customer und OrderLine referenzierten Entitäten werden ebenfalls zu verwalteten
Entitäten. Beim Ausführen der Flush-Operation für die Transaktion
werden alle Entitäten dahingehend geprüft, ob sie geändert wurden.
Die geänderten Entitäten werden im Cache aktualisiert. Nach Abschluss der Transaktion
durch Festschreibung oder Rollback werden die Entitäten freigegeben, und alle Änderungen, die an den Entitäten vorgenommen wurden,
werden nicht in den Cache übernommen.