2012-05-29 18 views
5

इस इकाई है ब्लॉब प्रकार हैं:ईबेन और प्ले 2 के साथ ब्लॉब का उपयोग कैसे करें?

@Entity 
@Table(name="image_info") 
public class ImageInfo extends Model { 

    ....... 

    @Constraints.Required 
    private Blob image; 

    ....... 
} 

$ नाटक -DapplyEvolutions.default = true रन

मैं की तरह त्रुटियों मिला निम्नलिखित:

[warn] c.j.b.ConnectionPartition - BoneCP detected an unclosed connection and will now attempt to close it for you. You should be closing this connection in your application - enable connectionWatch for additional debugging assistance. 
[error] c.a.e.s.t.r.ImmutableMetaFactory - Was unable to use reflection to find a constructor and appropriate getters forimmutable type interface java.sql.Blob. The errors while looking for the getter methods follow: 
[error] c.a.e.s.d.p.DeployCreateProperties - Error with models.ImageInfo field:image 
java.lang.RuntimeException: Unable to use reflection to build ImmutableMeta for interface  java.sql.Blob. Associated Errors trying to find a constructor and getter methods have been logged 
at com.avaje.ebeaninternal.server.type.reflect.ImmutableMetaFactory.createImmutableMeta(ImmutableMetaFactory.java:71) ~[ebean.jar:na] 
at com.avaje.ebeaninternal.server.type.DefaultTypeManager.recursiveCreateScalarTypes(DefaultTypeManager.java:227) ~[ebean.jar:na] 
at com.avaje.ebeaninternal.server.deploy.parse.DeployCreateProperties.createProp(DeployCreateProperties.java:357) [ebean.jar:na] 
at com.avaje.ebeaninternal.server.deploy.parse.DeployCreateProperties.createProp(DeployCreateProperties.java:377) [ebean.jar:na] 
at com.avaje.ebeaninternal.server.deploy.parse.DeployCreateProperties.createProperties(DeployCreateProperties.java:168) [ebean.jar:na] 
at com.avaje.ebeaninternal.server.deploy.parse.DeployCreateProperties.createProperties(DeployCreateProperties.java:94) [ebean.jar:na] 

मैं कैसे परिवर्तन कर सकता है तो ब्लॉब प्रकार पहचाना जा सकता है?

उत्तर

10

Ebean साथ blob बनाने के लिए आप @Lob टिप्पणी के साथ बाइट सरणी उपयोग करने की आवश्यकता

@Lob 
public byte[] image; 

अधिकांश शायद आप फ़ाइल < के बीच बदलने की आवश्यकता होगी -> बाइट सरणी है, तो शायद यह फाइल सिस्टम में फ़ाइलों को स्टोर करने के लिए आसान है ? (एफएस में फाइलों को स्टोर करने के अलावा डीबी की तुलना में बस सस्ता है)

यदि आपको विशेष पहुंच प्रतिबंधों की आवश्यकता है, तो आप अनुमतियों की जांच करने और डीबी में संग्रहीत पथ द्वारा डिस्क से फ़ाइल को स्ट्रीम करने के लिए अपने नियंत्रक का उपयोग कर सकते हैं।

+0

धन्यवाद। मुझे हेरोोकू पर एक त्रुटि मिली, 'त्रुटि: प्रकार "ब्लॉब मौजूद नहीं है'। मैंने अपने स्थानीय में 'प्ले रन' का उपयोग करने की कोशिश की, यह काम करता है। लेकिन Heroku नहीं। – angelokh

+0

हेरोोक डिफ़ॉल्ट रूप से पोस्टग्रेज़ का उपयोग करता है और शायद आप MySQL के साथ localy विकसित कर रहे हैं (नोट: मैं बस अनुमान लगाने की कोशिश कर रहा हूँ)। पोस्टग्रेज़ [ब्लॉब का समर्थन नहीं करता] [http://www.postgresql.org/docs/current/interactive/datatype-binary.html) – biesior