2012-05-05 6 views
10

मुझे अपनी संस्थाओं में स्ट्रिंग्स और एनम्स का संग्रह मैप करने में समस्याएं हैं। मैंने विभिन्न सलाहों का पालन किया है, लेकिन कुछ भी काम नहीं कर रहा है। मैं PlayFramework 2.0 और प्रदत्त ईबीन को ओआरएम के रूप में उपयोग कर रहा हूं। ,ईबीन के साथ स्ट्रिंग और एनम का मानचित्रण संग्रह (प्ले 2.0)

create table foo (
id  bigint not null, 
constraint pk_foo primary key (id)) 
; 

मैं देखना दोनों तालिकाओं bar_foobar और bar_strings बनाया जा रहा उम्मीद करेंगे:

package models; 

import java.util.*; 
import javax.persistence.*; 
import play.db.ebean.Model; 

@Entity 
@Table(name = "foo") 
public class Foo extends Model { 

    private static final long serialVersionUID = 1L; 

    private enum FooBar { 
     FOO, BAR; 
    } 

    @Id 
    public Long id; 

    @ElementCollection 
    @Enumerated(EnumType.STRING) 
    @CollectionTable(name = "bar_foobar", 
     joinColumns = @JoinColumn(name = "bar_id", 
      referencedColumnName = "id")) 
    @Column(name = "foobar") 
    public List<FooBar> fooBars; 

    @ElementCollection(targetClass = String.class) 
    @CollectionTable(name = "bar_strings", 
     joinColumns = @JoinColumn(name = "bar_id")) 
    @Column(name = "string", nullable = false)  
    public List<String> listOfStrings; 

    @Basic 
    public List<String> listOfStrings2; 

    // Attempt to circumvent the issue, but this gives a strange error 
    //public String[] arrayOfString; 
} 

उत्पन्न DDL इस तरह जब आवेदन शुरू कर दिया है लगता:

यहाँ एक उदाहरण वर्ग है अगर टिप्पणियां सही थीं।

arrayOfString चर का उपयोग कर रहे हैं, तो मैं एक अनुप्रयोग प्रारंभ (जो एक यादृच्छिक इकाई से संबंधित होने पर एक weired त्रुटि संदेश मिलता है, जरूरी नहीं कि Foo.class

PersistenceException: के साथ त्रुटि [models.user.User] यह बढ़ाया गया है लेकिन यह superClass [class play.db.ebean.Model] है? (आप को एकल विरासत पदानुक्रम में वृद्धि को जोड़ने की अनुमति नहीं है) मार्कर [play.db.ebean.Model] className [मॉडल .user.User]

मुझे पता है कि मैं अपनी स्ट्रिंग्स और एम्स को इकाइयों में लपेट सकता हूं, और @ मैनी टॉनी रिश्ते का उपयोग कर सकता हूं, लेकिन इसका विचार मुझे कंपकंपी बनाता है। क्या Play 2.0 या Ebean (v2.7.3 का उपयोग करके) में कोई बग है? क्या मैं अन्य समस्याएं हल कर सकता हूं?

उत्तर

0

यह 2.0 (link) में एक ज्ञात समस्या है, लेकिन 2.0.1 में तय किया जाना चाहिए।

संपादित करें: स्पष्टता के लिए, 'इस' के साथ PersistenceException का जिक्र किया जा रहा है।

+0

उत्तर के लिए धन्यवाद। यह दृढ़ता अपवाद के बारे में है, है ना? मैंने वास्तव में 2.0.1 तक अपग्रेड करने का प्रयास किया है, और इसके बाद भी यही अपवाद मिला है। लेकिन शायद इसे हल करने के लिए मुझे 2.0.1 के साथ स्क्रैच से परियोजना बनाने की आवश्यकता है? मेरा मुख्य प्रश्न स्ट्रिंग/एनम मैपिंग के बारे में था, पोस्ट में दूसरा प्रश्न जोड़ने के लिए खेद है। – kvitso

1

संग्रह मैपिंग अभी तक ईबीन में लागू नहीं किया गया है। EBEAN-378 आप जो भी कर सकते हैं वह स्वयं को मैपिंग लागू कर रहा है। @PrivateOwned एनोटेशन का उपयोग Foo पक्ष पर किया जा सकता है ताकि यह सुनिश्चित किया जा सके कि स्ट्रिंग्स डीबी में नहीं रहती हैं, अगर उन्हें संग्रह से हटा दिया जाता है।

संबंधित मुद्दे