Şu anda bir sorunu (iyi bir bilinir) sahip kaldırmak sahip olmayan taraf değil.Bahar Veri DİNLENME + JPA hangi bir olduğunu <code>Spring Data JPA</code> + <code>Spring Data REST</code> (<code>Hibernate</code><code>JPA</code> olarak uygulanması) ile OneToMany koleksiyonu [sahibi değil yan]
haritalama şudur:
@Entity(name = Product.NAME)
public class Product {
...
@OneToMany(mappedBy = "baseProduct", fetch = FetchType.LAZY, targetEntity = Variant.class)
List<Variant> getVariants() {
...
ve diğer varyant tarafında
:@Entity(name = Variant.NAME)
public class Variant extends Product {
...
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Product.class)
@JoinColumn(name = "baseproduct_id", referencedColumnName = "id")
Product getBaseProduct() {
...
}
sadece Spring Data JPA
kullanırsanız tüm Ancak eğer Java tarafta iyi olduğunu varyant koleksiyonunu güncelleyerek "ürün" ü güncellemek ve PATCH
isteğini https://localhost:8112/storefront/rest/product/21394435410197232 numaralı Yeni koleksiyon sadece (3 öğe arasından 2 olan):
{"variants":["22801810293768080","22801810293768096"]}
Ben hiçbir istisna vs. ister ama sahibi olan tarafı olduğundan diğer tarafı hiçbir şey kalıcıdır ve tekrar eski
3 items
aldık.
Ben know
Ben ancak ben ne kadar büyük emin değilim bir performans ima (orada duymuş, her iki tarafın ve her yerde mappedBy
kullanmayın üzerinde
@JoinColumn(name = "baseproduct_id", referencedColumnName = "id")
ayarlayarak bunu düzeltmek anlamına @OneToMany
olan 100+ varlık var) ve merak ediyorum @PreUpdate
dinleyici veya başka bir şey üzerinden daha iyi bir çözüm var mı?
Teşekkürler, şu anda şu anda sadece ben kimseyi kaldırmak istemiyorum sadece "bağlantısını" kaldırmak değil yan tarafını kaldıran :) Ayrıca kasırga (lar) büyük bir hayranı değilim ve belki de eksik Bir şey ama addXXX ve removeXXX yöntemleri bir şekilde Spring Data Rest tarafından çağrılacak? – JOKe
Ardından, yanlış bir eşleme var çünkü bir '@ JoinTable' belirtmediniz. Birleştirme tablonuz varsa, haritanın en iyi yolu, birleştirme tablosunu 2 '@ManyToOne' dernekleri olan bir ara varlık olarak eşlemektir. Kitabımda [High-Performance Java Persistence] (https://leanpub.com/high-performance-java-persistence) örneğim var. –