/ / Jak korzystać z BLOBa w eBean & Play 2? - blob, playframework-2.0, ebean

Jak korzystać z bloba z eBean i grać 2? - blob, playframework-2.0, ebean

To jest encja zawiera typ obiektu blob:

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

.......

@Constraints.Required
private Blob image;

.......
}

$ play -DapplyEvolutions.default = true run

Wystąpiły następujące błędy:

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

Jak mogę dokonać zmiany, aby można było rozpoznać typ obiektu blob?

Odpowiedzi:

10 dla odpowiedzi № 1

Aby utworzyć blob z Ebean musisz użyć tablicy bajtów z @Lob adnotacja

@Lob
public byte[] image;

Najprawdopodobniej będziesz musiał przekonwertować między tablicą bajtów File <->, więc może łatwiej jest przechowywać pliki w systemie plików? (poza tym przechowywanie plików w FS jest po prostu tańsze niż w DB)

Jeśli potrzebujesz specjalnych ograniczeń dostępu, możesz użyć własnego kontrolera, aby sprawdzić uprawnienia i przesłać strumieniowo plik z dysku według ścieżki zapisanej w bazie danych.