2009-03-05 19 views
4

Bir EnumSet'im var, bir dizi boole sütunuyla eşleştirmek iyi olacağını düşündüm. Bu, SQL araçlarını kullanıp denetlemeyi kolaylaştırır ve aynı zamanda mevcut enum değerlerinde yapılan değişikliklere karşı da dirençli hale getirir. Ancak, bunun için tüm alıcıları ve ayarlayıcıları el ile yazmak istemiyorum.EnumSet'i, Hazırda Bekletme Ek Açıklamalarını kullanarak otomatik olarak bir dizi boole sütununa eşleyebilir miyim?

Bu nesneyi bir grup özelliğe bölmek için bir çeşit hazırda bekleme meta verileri kullanan akıllı bir çözüm var mı?

Teşekkürler!

public enum Color { RED, GREEN, BLUE; } 

bir veritabanında 3 doğru/yanlış sütunları, olası her enum değeri için bir olurdu: Ben bir enum benzeri, doğru anlamak

cevap

1

. Sonra, diyelim ki, kırmızı ve mavi içeren bir EnumSet, aktarılması gerektiğini: Eğer durum buysa

RED GREEN BLUE 
true false true 

, bildiğim tek yolu arasında org.hibernate.usertype.UserType kendi uygulaması yazmaktır. Hazırda bekleyen bazı örnekler ve örneğin here gibi oldukça basit bir görevdir.

Edit: Sadece bazı şeylerin biraz daha karmaşık olması gerektiğini fark ettim. Eğer uygulamadaki tüm olası EnumSet için bir hazırda tip eşleme isterseniz, aşağıdakileri yapmanız gerekir:

  1. Kullanım org.hibernate.usertype.ParameterizedType ve bir enum sınıfı tarafından parameterizable Kullanıcı türünü olun.
  2. Enum sınıfı değerlerine bağlı olarak, kaç tane ve hangi sütunların okuma/yazma yapılacağını belirleyin.
  3. Her seferinde bir EnumSet kullanıldığında türü örnek alır.
  4. Birden çok kümeyi tek bir tabloda eşleme olasılığını ve yeni bir enum değerinin eklenmesinin var olan türdeki çalışmaların etkilerini nasıl etkileyeceğini göz önünde bulundurun.

Bu tam günlük çalışmayı kolayca yapabilir, ancak oldukça yapılabilir görünüyor. Umarım buradan anlarsın.

+0

Teşekkürler ... El ile yaptım ama muhtemelen tek çözüm olanı sağladınız. –

İlgili konular