Aralarında çoktan çoğa ilişkisi olan iki varlığım var. İlişki, her bir varlık için, ilgili standart, oldukça standart olan postgreslerde yardımcı eşleştirme tablosu kullanılarak temsil edilir.Hazırda bekletme, @ManyToMany iki yönlü ilişkiyle sonsuz döngüye neden olur
bucket_object_mapping
tablosunu arayabilir ve iki sütunu vardır: bucket_id
, object_id
.
kepçe sınıfı: I (buna gerek yok) Bucket
sınıfına hiçbir eşleme Model
sınıfında
@Entity
@Table(name = "bucket")
public class Bucket {
// Some fields omitted here
@ManyToMany(cascade = {}, fetch = FetchType.LAZY)
@JoinTable(
name = "bucket_object_mapping",
joinColumns = @JoinColumn(name = "bucket_id"),
inverseJoinColumns = @JoinColumn(name = "object_id")
)
private List<Model> models;
}
Ben bu basit bir sorgu çalıştırdığınızda:
SELECT bucket FROM Bucket bucket WHERE bucket.customerId=:customerId
Veriler ilk başta iyi bir şekilde döndürülür, ancak sonranumaralı sorgulara sonsuz bir döngü verilir. 10 tablo çalışmaya başlar ve neden emin değilim. Sonuç listesini bir SpringMVC denetleyicisi üzerinden döndürdüğümde böyle görünüyor. Bucket
'u bir DTO'ya dönüştürüyorum, ancak Model
(Bu yalnızca Model
öğesinin Bucket
öğesinin herhangi bir referansı yoktur, dolayısıyla dairesel bir başvuru sorunu olmaması gerekir).
Kontrolör kodu:
@RequestMapping(value = "", method = RequestMethod.GET)
@ResponseBody
public List<BucketDTO> getAllByCustomer(@RequestParam(value = "customerid") final Long customerId) {
return bucketService.getAllBucketsForCustomer(customerId);
}
hizmetinde kodu:
@Transactional
public List<BucketDTO> getAllBucketsForCustomer(final Long customerId) {
List<Bucket> buckets = bucketDao.getBucketsForCustomer(customerId);
List<BucketDTO> result = bucketDtoConverter.toDtoList(buckets);
return result
}
yol açtı sohbet takip edebilir? – LearningPhase
@LearningPhase - soruyu düzenledi. Ayrıca denetleyici ile DAO arasında köprü görevi gören hizmet yöntemini ekledim. – Avi
Show Model.class. Bucket.class ile ilişkiniz var mı? – Victor1125