0
我有兩個實體客戶和訂單(瑣碎的getter和setter方法除外)高效JPQL:在@OneToMany更新實體
@Entity
public class Customer {
@GeneratedValue
@Id
private int id;
@OneToMany
List<Order> orderList;
}
@Entity
public class Order {
@GeneratedValue
@Id
private int id;
@ManyToOne
Customer customer;
private boolean paid;
public Order(Customer customer) {
this.customer = customer;
customer.getOrderList().add(this)
}
}
現在我需要設置「支付=真」給定客戶的所有訂單 下面的查詢似乎做的伎倆,但我覺得它是無效的,事實上,我存儲在Customer.orderList反向關係提示應該有其他方式來做到這一點。
UPDATE Order o SET o.paid = true WHERE EXISTS
(SELECT c.orderList FROM Customer c WHERE o MEMBER OF c.orderList AND c = :customer)
我正在使用容器管理的事務,glassfish和javaDb。但我更喜歡如果可以在JPA/JPQL域進行改進,而不是特定於容器或數據庫。
新增數據類型。 –
我已經考慮過這個選項,但我認爲使用jpql進行批量更新會更快,因爲它不需要構造Java實體。 –
什麼類型的字段在數據庫中「付費」? – Ilya