Tutorial do Entity Manager: Atualizando Entradas

Se você desejar alterar uma entidade, é possível localizar a instância, atualizar a instância e quaisquer entidades referenciadas, além de executar o commit da transação.

Antes de Iniciar

Procedimento

Entradas de atualização. O exemplo a seguir demonstra como localizar a instância Order, alterá-la e qualquer entidade mencionada, e confirmar a transação.
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);
    }
}
Executar o flushing da transação sincroniza todas as entidades gerenciadas com o cache. Quando ocorre o commit de uma transação, automaticamente ocorre um flush. Neste caso, Order se torna uma entidade gerenciada. Quaisquer entidades referenciadas de Order, Customer e OrderLine também se tornam entidades gerenciadas. No flush da transação, cada entidade é verificada para determinar se foi modificada. As que foram modificadas são atualizadas no cache. Após a conclusão da transação, através de commit ou rollback, as entidades se separam e quaisquer alterações feitas nas entidades não são refletidas no cache.