2008-09-18 39 views
11

Hazırda kimliği olan bir kimlik için @GeneratedValue baypas etmek mümkün mü, çoğu zaman kimliğin GeneratedValue kullanarak ayarlanmasını istediğimiz bir durum var, ancak bazı durumlarda kimliği el ile ayarlamak istiyoruz .Hazırda Bekletme Süresi Hazırda Beklemede

Bunu yapmak mümkün mü?

cevap

5

Ben JPA spec yapabilirsiniz biliyorum, bu nedenle Hibernate (JPA + ek açıklamaları kullanarak) mümkün olmalıdır.

sadece oluşturduğunuz yeni kalıcı modelin kimliği alanına doldurmak, o zaman EntityManager içine modeli, bu ayarladığınız kimliğini kullanır "Birleştirme".

Bu, olsa da, sonuçları var. Bu kimliği daha yeni kullandınız, ancak GeneratedValue notunun belirttiği dizi bunu bilmiyor. Geçerli sıralama değerinden daha az olan bir ununsed ID'yi belirtmediğiniz sürece, sıra, kullandığınız değere yetiştiğinde bir sorunla karşılaşacaksınız. Eğer kullanıcı kimlik belirtme isterler nerede olabileceğini

Yani, belki ben görebilirsiniz, ama o zaman ileride gelebilecek olası İstisna (yinelenen kimliği) yakalamak gerekir. Kimliği sadece işlemde farklı noktalarda, her iki durumda da aynı dizisinden oluşturulabilmektedir gibi Benim durumumda

+0

, hiçbir yinelenen olmazdı. –

+1

Bu konuda şüphem yok, http://stackoverflow.com/questions/3194721/bypass-generatedvalue-in-hibernate-merge-data-not-in-db ve http://stackoverflow.com/questions gibi soruları görmek/2108178/id-generatedvalue-ama-set-kendi-id-değer. –

+2

Bunun da doğru olduğunu düşünmüyorum. Kesinlikle hazırda çalışmıyor ve bu da çoğu JPA sağlayıcı ile çalışacağından şüphelerim var. – cyberoblivion

İlgili konular