2014-12-09 2 views
1

Если я определяю модель, например, так;Scala и Ebean: Сохранение наборов в качестве полей модели

@Entity 
case class User(name: String, age: Int) extends Model { 
    … 
    @Lob 
    images: Set[String] = Set() 
    … 
} 

Я вижу, что images поле не получает упорствовал: или, по крайней мере, в моем тестовом случае с базой данных в оперативной памяти, он всегда получает значение null на получение объекта.

Каков наилучший способ приблизиться к этому?

ответ

2

Я думаю, что есть некоторые путаницы. @Lob для «Больших объектов», поэтому файл изображения (singlelular), а не для набора строк. Возможно, вы пытаетесь сохранить «Clob», но тогда это будет единственный String (а не набор String).

В Ebean из 4.3.1 вы можете использовать файл @Lob fileFile; и затем Ebean будет транслировать файл для вас (во временную директорию для потоковой передачи), а оттуда вы можете перемещать файл, обрабатывать его и т. д. До 4.3.1 вам пришлось использовать @Lob byte [] imageFile; (или для clob ... @Lob String largeContent;), и если вы хотите, чтобы потоковая передача его сама (как и JPA в настоящее время), это либо боль, либо больший объем потребления памяти.

Так в 4.3.1 я бы рекомендовал (потому что потоковое большое содержание, как правило, хорошо):

@Entity 
case class User(name: String, age: Int) extends Model { 
    … 
    @Lob 
    imageFile: File 
    … 
}