Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双向字段-自动更新?_Java_Jakarta Ee_Mapping - Fatal编程技术网

Java 双向字段-自动更新?

Java 双向字段-自动更新?,java,jakarta-ee,mapping,Java,Jakarta Ee,Mapping,如果一侧发生变化,是否可以让双向字段自动更新 class Customer { @OneToManycascade=ALL, mappedBy="customer") public list<Order> orders; } class Order { @ManyToOne private Customer customer; } class客户{ @OneToManycascade=ALL,mappedBy=“客户”) 公开名单命令; } 阶

如果一侧发生变化,是否可以让双向字段自动更新

class Customer {

    @OneToManycascade=ALL, mappedBy="customer")
    public list<Order> orders;
}

class Order {

    @ManyToOne
    private Customer customer;
}
class客户{
@OneToManycascade=ALL,mappedBy=“客户”)
公开名单命令;
}
阶级秩序{
@许多酮
私人客户;
}
如果我在类Order中设置customer字段,我是否还必须向customer类的orders列表执行添加(Order)? 或者另一方可以自动更新吗


ty

我的方法是将订单添加到客户,然后保留客户,这将自动保留订单的“拥有方”

Order newOrder = new Order();

customer.orders.add(newOrder);
order.setCustomer(customer);
customerDao.persistOrMerge(customer);

根据您也使用的实现(JPA、Hibernate等),您可能还需要将客户添加到订单中。但是在大多数实现中,级联应该考虑到这一点。我个人不会依赖于确定实现会为您带来什么,而是会增加双方的利益,并以这种方式坚持下去。我个人也总是首先存储非拥有方。但同样,根据实施情况,这也可能不是必需的

我的方法是将订单添加到客户,然后持久化客户,这将自动持久化订单的“拥有方”

Order newOrder = new Order();

customer.orders.add(newOrder);
order.setCustomer(customer);
customerDao.persistOrMerge(customer);

根据您也使用的实现(JPA、Hibernate等),您可能还需要将客户添加到订单中。但是在大多数实现中,级联应该考虑到这一点。我个人不会依赖于确定实现会为您带来什么,而是会增加双方的利益,并以这种方式坚持下去。我个人也总是首先存储非拥有方。但同样,根据实施情况,这也可能不是必需的

是的,我就是这么说的。我想有一种方法可以避免额外的语句,比如
order.setCustomer(customer)并由JPA/Hibernate自动完成。是的,这就是我所说的。我想有一种方法可以避免额外的语句,比如
order.setCustomer(customer)并由JPA/Hibernate自动完成。