OpenJPA 1.2.2
Spring 3
HSQLDB 2.0
JUnit Testing with SpringJUnit4ClassRunner & Spring @Transactional on
Testclass
--
class Settlement {
@OneToMany(mappedBy = "settlement", Cascade=CascadeType.REFRESH)
private List<VoucherProcessed> vouchersProcessed = new
ArrayList<VoucherProcessed>(0);
...
}
public class VoucherProcessed {
@OneToOne
@JoinColumn
private Voucher voucher;
@ManyToOne
@JoinColumn
private Settlement settlement;
...
}
The service class passes a new Settlement object along with a list of
vocherIds (since VoucherProcessed
are already persisted)
// dao
@Transactional
public void save(Settlement settlement, List<Long> voucherIds) {
// Load VoucherProcessed
List<VoucherProcessed> vouchersProcessed = (List<VoucherProcessed>) em
.createQuery("SELECT vp FROM VoucherProcessed vp WHERE
vp.voucher.voucherId IN (:voucherIds)")
.setParameter("voucherIds", voucherIds).getResultList();
if (vouchersProcessed != null) {
settlement.setVouchersProcessed(vouchersProcessed);
em.persist(settlement);
}
}
The above code generates INSERT for settlement but there's no update for
Voucher like:
UPDATE Voucher SET settlement.id=?
However, if I pass Settlement with a persistent VoucherList to the dao,
Update is generated.
What am I missing?
--
View this message in context:
http://openjpa.208410.n2.nabble.com/Update-statements-not-generated-for-a-OneToMany-mapping-tp6476296p6476296.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.