Lernprogramm zum EntityManager: Einträge aktualisieren

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.

Vorbereitende Schritte

Vorgehensweise

Aktualisieren Sie Einträge. Das folgende Beispiel veranschaulicht, wie Sie die Order-Instanz suchen, die Instanz und alle referenzierten Entitäten ändern und 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.