2011-05-21 4 views
13

Kısa bir süre önce hazırda bekletme modunun en son sürümüne sahip oldum ve UserTypes'imin, bir SessionImplementor bağımsız değişkenini kullanan karşılık gelen yöntemlerden yararlanarak, AbstractStandardBasicType'ın nullSafeGet (ResultSet, String) ve nullSafeSet (PreparedStatement, T, int) yöntemleri hakkında deprecated ile ilgili uyarıları olduğunu fark ettim. Sorun, bir UserType uyguladıktan sonra, SessionImplementor, BasicType, CompositeUserType, vb. Yolunda geçirilen bir şekilde geçirilmemesidir.Kullanımdan kaldırıldıktan sonra Hazırda bir Kullanıcı Türü'nü uygulamaya koymanın en iyi yolu?

Güncelleştirilmiş bir örnek olup olmadığını görmek için Hazırda Bekletme kılavuzunu kontrol ettim. UserType örneği nullSafeGet/nullSafeSet yerine get/set kullanır, ancak bu yöntemler bir SessionImplementor kullanan sürümlerin lehine de kaldırılmıştır. Kullanıcıtürü içinden SessionImplementor almak için iyi bir yoldur

  1. var mı: Yani, iki şey merak beni neden olan kaldırılmış yöntemler kullanılarak bile kış uykusuna resmi UserType örneği gibi görünüyor?
  2. SessionImplementor'ı UserType içinden almak pratik değilse ve kendi nullSafeGet/nullSafeSet'imi yazmak istemiyorsam, UserType'ı alternatiflerinden birinin lehine bırakmalı mıyım? UserType ve örneğin BasicType arasındaki pratik farklar nelerdir?
+3

Bu konu hakkında hibernate-dev postalama listesinde bir görüşme var: [burada] (http://lists.jboss.org/pipermail/hibernate-dev/2011-Şubat/006030.html) –

+1

Orada bir bu konudaki çözüm 4.1.0.Finalde mi? Öyle görünmüyor ... – MetaChrome

+0

Keşke size anlatabilseydim. JPA'ya geçiş yaptım ve maalesef UserTypes gibi herhangi bir şeyi desteklemeyen standart JPA ek açıklamalarına sadık kaldım. – spaaarky21

cevap

5

Özgün sorumu üzerine yaptığı yorum için Ryan Ransford'a teşekkürler. Soruna gerçekten bir çözüm olmasa da, Hibernate geliştiricileri posta listesinden sağladığı link, çözümün neden mevcut olmadığını açıklıyor. böylece yaparak UserType uygulamalarını kıracak için

olmayan kullanım dışı bir alternatif

, 3.6.x temin edilemez.

bunlar sadece uyarıları kullanımdan kaldırılması göz önüne alındığında, bir sonraki olmayan bakım sürümüdür kullanılabilir olduğunda eskimiş olacak geçici bir çözüm çok fazla zaman yatırım yapmak mantıklı değil. Ne yazık ki, bir sonraki büyük sürüm 3.7 değil, 4.0, bu yüzden göç etme biraz daha ilgili olabilir.

+1

Tamam ve ..? Bu yüzden, v3.something'den v4.something öğesine geçiş yaptığımda, şimdi kullanımdan kaldırılan UserType'ın nullSafeGet/nullSafeSet yöntemleri hakkında ne yapabilirim? – KyleM

+0

@KyleM Sıkı bir JPA yaklaşımına geçtim ve kesin bir şey söyleyemedim. Hibernate 4.2 JavaDocs'da, kullanımdan kaldırılmış yöntemlerin kaldırıldığını görüyorum ancak SessionImplementor alan nullSafeGet()/Set() yöntemleri hala var. Kullanıcı Türü'nün bu yöntemleri yerine getireceğini varsayardım, ancak kendimi hiç yapmadığım için uygun yaklaşımı yorumlayamıyorum. – spaaarky21