2010-09-07 36 views
9

JPA/Hazırda bekletme ek açıklamaları ile ORM'ise çalışıyorum varolan bir DB şema var. Şema için tasarlanmıştır, istemcilerin bir tablodaki her satırda fazladan bilgi paylaşmasını sağlar. Bir anahtar-değer modeli kullanmak yerine, mevcut çözüm, yükleme zamanında gereken dinamik sütun sayısını belirler ve tabloyu dinamik alanlar için fazladan sütun ekleme olarak değiştirir. Aslında, her bir tablonun bir bilinen/sabit sütun grubu ve dinamik sütun grubu vardır.JPA/Dinamik sütunları bir liste nesnesi olarak eşleştirin

|table:X| 
|id|known1|known2|dynamic1|dynamic2|..|dynamicx| 

bir parametre tablosu tabloları ekstra dinamik alanlar

JPA modelleme Bu ise
|table:parameter| 
|table|column|meta| 
|x|dynamic1|| 
|x|dynamic2|| 
|x|dynamicx|| 
|y|dynamic15|| 

sahip olan işaret, her masada bilinen sabit sütunlar için bir tanım oluşturmak kolaydır.

@Entity 
@Table(name="x") 
public class X 
{ 
    @Id 
    private Long id = null; 

    @Column(name="known1") 
    private Long known1 = null; 
} 

Ben parametrelerin bir listesi var benim sınıfların her izin sonra bir sınıf olarak parametre tablosu modellemek ve planlıyoruz. Bu Liste nesnesini nasıl eşleştireceğime emin değilim, böylece detaylar aynı tabloya yazılır.

@Entity 
@Table(name="x") 
public class X 
{ 
    // @Column(name="x",class="X") ?????????? 
    List<Parameter> dynamicColumns = null; 
} 

Ben doğru dinamik alan için sütun adını belirlemek için özel bir adlandırma stratejisi kullanabilirsiniz inanıyoruz. Bu tipi haritalama mümkün mü?

+1

... Bu biraz normalleşmesini gereken bir şema gibi geliyor. Bu soru için – Zoidberg

+0

, yapamayacağımı varsayalım. Sanırım tuğla duvara çarpmaya yakınım. – emeraldjava

cevap

1

Bu dinamik verilere jpa kullanarak ulaşmak için bir nativeQuery kullanmanız gerekeceğini düşünüyorum.

+0

+1: JPA'nın bu tür bir ihtiyaç için tasarlanmadığını düşünüyorum ve bunu yapmayı başarırsanız, büyük bir maliyetle (ve kirli bilgisayarlarda) olacaktır. Mümkün olduğunda, yerel sorgular ve 'ResultTransformer'leri kullanın. – Vincent

+0

Bu, sorunun cevabını sağlamaz. Bir yazardan eleştiri yapmak veya açıklama istemek için yazılarının altında bir yorum bırakın. – Chaos

+0

@Chaos Bu bir eleştiri olarak değil, benim düşünceme göre bu sorunu çözmek için en iyi yoldur, yani bir tablodan dinamik sütunların bir listesini sorgulamaktır. – AmanicA

0

Hazırda bekletme durumunda bu mümkündür, Lütfen aşağıdaki makaleye bakın. Ancak bu eski bir yaklaşım (2007) Ben JPA kullanarak uygulamak için kafa kırıyorum. Bu konudaki değil başarılı bugüne kadar

http://www.infoq.com/articles/hibernate-custom-fields

Başka e-posta iplik Sana veritabanını değiştirmek edebiliyoruz umut

https://www.java.net//node/666078

+1

Yalnızca bağlantı yanıtları, bağlantıların ortadan kalkması nedeniyle kesinlikle önerilmez. –

İlgili konular