FIX: Bean did not get dirty when modified with ExpressionPath.pathSet

This commit is contained in:
Roland Praml
2016-08-30 09:13:44 +02:00
parent 1796c8b9bc
commit adfe5f0305
3 changed files with 45 additions and 2 deletions
@@ -2,6 +2,7 @@ package com.avaje.ebean.plugin;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.EbeanServer;
import com.avaje.tests.model.basic.Customer;
import com.avaje.tests.model.basic.Order;
import org.junit.Test;
@@ -76,4 +77,46 @@ public class ExpressionPathTest {
assertThat(order.getCustomer().getName()).isEqualTo("Rob");
}
@Test
public void test_dirty() throws Exception {
BeanType<Customer> customerBeanType = beanType(Customer.class);
BeanType<Order> orderBeanType = beanType(Order.class);
Customer customer = new Customer();
customer.setName("foo");
server.save(customer);
customer = server.find(Customer.class, customer.getId());
assertThat(customer.getName()).isEqualTo("foo");
customerBeanType.getExpressionPath("name").pathSet(customer, "bar");
server.save(customer);
customer = server.find(Customer.class, customer.getId());
assertThat(customer.getName()).isEqualTo("bar");
Order order = new Order();
order.setCustomer(customer);
server.save(order);
order = server.find(Order.class, order.getId());
ExpressionPath customerNamePath = orderBeanType.getExpressionPath("customer.name");
assertThat(customerNamePath.pathGet(order)).isEqualTo("bar");
customerNamePath.pathSet(order, "baz");
server.save(order);
order = server.find(Order.class, order.getId());
assertThat(order.getCustomer().getName()).isEqualTo("baz");
}
}
@@ -86,7 +86,7 @@ public class Order implements Serializable {
Date shipDate;
@NotNull
@ManyToOne
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "kcustomer_id")
@DocEmbedded(doc = "id,name")
Customer customer;