Hazırda bekletme, bir ilişkilendirmenin nesnesi bir bileşik anahtar olduğunda bir FK başvurusunu güncelleştiriyor gibi görünmüyor.Hedef bileşik anahtar olduğunda ManyToOne'u kaydetme Hazırda bekletme
İşlem başarılı (hata yok, yığın izi yok) ancak güncelleme bildirimi oluşturulmadı (hazırda bekletme günlüğüne sahip durumdayım).
Semptomlarda herhangi bir değişiklik yapmadan, kaskatı ek açıklamaların (kaskat, ALL, PERSIST, hatta SAVE_UPDATE) her tür yolunu denedim. Güncelleme belirtisi, hem on-line OpenXava ekranından hem de özel Java kodundan (OpenXava eyleminde) mevcuttur.
Uygulama veritabanının tablolara harici yüklemelere izin verme gereksinimleri vardır, bu yüzden sistem tarafından atanan anahtarlara geçmenin sürdürmek istedikleri bir seçenek olmadığı söylendi.
(şu anda herhangi bir kaskad ayarı olmadan) sahip olma dernek:
@ManyToOne(fetch=FetchType.LAZY,optional=false)
@Required
@JoinColumns({
@JoinColumn(name="programID",referencedColumnName="programID",nullable=false,unique=false,insertable=false,updatable=false),
@JoinColumn(name="projectID",referencedColumnName="projectID",nullable=false,unique=false,insertable=false,updatable=false)
})
@DescriptionsList(descriptionProperties="parentProgram.programName,projectName")
@ReferenceView("reference")
private Project associatedProject;
ters ilişki:
@OneToMany(mappedBy="associatedProject",fetch=FetchType.LAZY) //No cascade allowed
@ReadOnly
private Set<Asset> assets = new HashSet<Asset>();
açık hazırda hata bu konuda varsa
bilen var mı? Google aramasını kullanarak hiçbir şey bulamadım, ancak belki de birisinin ilk elden deneyimi var.
Sağol, Roy.
DÜZENLEME: Bir çalışma çevresinde kendi HQL güncellememi yazmaya çalıştım. SET madde işlerken bir geniş hazırda yazım hatası unexpected AST node: AND
başarısız
update Asset set associatedProject = :ap where assetKey = :key
. Sonra update Asset cross join set projectID=?, programID=? where assetKey=?
oluşturulur ve
update Asset set associatedProject.projectId = :projId, associatedProject.parentProgram = :pgm where assetKey = :key
kendi SQL güncelleme işler yapmaya
Ancak "çapraz" nde geçersiz sözdizimi başarısız oldu.
Herkes daha iyi bir çalışma ortamı var mı? Ya da kök sorunuyla ilgili başka düşünceleriniz var mı? Bence
, bu hala bir hazırda hata işaret (tabii ki bir hata - sadece herhangi bir hata veya mesajlar olmadan bir güncelleme atlamak olamaz) bileşik anahtar işleme ile.
Yaptığınız işe yakından bakmadım, ancak uykuda bir hata olduğundan şüpheleniyorum (hazırda bekletme yolu olgun). –
@Robert benim deneyimime göre, çok fazla değil.Kompozit anahtar desteğinin birçoğu en iyi şekilde belgelenmemiş ve tam olarak reklamı yapılan şekilde çalışmaz (çoğu sorun için şimdiye kadar iş çevreleri var gibi görünmektedir). –
@Brian 'programID/projectID ', Proje öğesinin bileşik anahtarıdır. 'ProgramID', Program varlığı için tek anahtardır. Bir Programın birçok projesi vardır. Bir Varlık (kote kodumun içeriği) belirli bir Proje ile ilişkilendirilir (Varlık tablosunda 2 sütunluk FK olarak uygulanır), ancak bir Proje'den diğerine aktarılabilir. Bu belirtinin sebebidir - ilişkilendirmeyi bir Proje'den diğerine değiştirirken, Hazırda Beklet, "relatedProject" değerinin değiştirilmesini sürdürmez. –