2012-05-29 5 views
5

Dies ist die Einheit enthält blob Typ:Wie Blob mit Ebean & Play 2 zu verwenden?

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

    ....... 

    @Constraints.Required 
    private Blob image; 

    ....... 
} 

$ -DapplyEvolutions.default = true run

spielen bekam ich Fehler wie folgt aus:

[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] 

Wie ich die Änderung vornehmen könnte so Blob-Typ kann erkannt werden?

Antwort

10

Um blob mit Ebean erstellen müssen Sie Byte-Array mit @Lob Anmerkung

@Lob 
public byte[] image; 

Wahrscheinlich müssen Sie zwischen Datei < konvertieren verwenden -> Byte-Array, so ist es vielleicht einfacher zu speichern Dateien in Dateisystem ? (neben dem Speichern von Dateien in FS ist nur billiger als in DB)

Wenn Sie spezielle Zugriffsbeschränkungen benötigen, können Sie eigenen Controller verwenden, um Berechtigungen zu überprüfen und die Datei von der Festplatte über den in der DB gespeicherten Pfad zu streamen.

+0

Danke. Ich habe einen Fehler auf Heroku, der sagt "FEHLER: Typ" Blob "existiert nicht". Ich habe versucht, "Play Run" in meinem lokalen, es funktioniert. Aber nicht Heroku. – angelokh

+0

Heroku verwendet Postgres standardmäßig und wahrscheinlich entwickeln Sie lokal mit MySQL (Hinweis: Ich versuche nur zu raten). Postgres [unterstützt kein Blob] (http://www.postgresql.org/docs/current/interactive/datatype-binary.html) – biesior

Verwandte Themen