В моей спящей системе у меня есть класс Picture, который имеет некоторые простые данные, список установок и некоторые (огромные) двоичные данные.Список Установок реализован с помощью таблицы соединений, так как это отношение ManyToMany и определено на стороне Установки:
@Entity
public class Picture {
@Id
private long pictureId;
private String mimeType;
@Lob
@Basic(fetch=FetchType.LAZY) // Don't load all data unless required
private byte[] picture;
@ManyToMany(mappedBy= "images")
private List<Installation> installations;
/** This should be used only to load partial objects through PictureDao */
public Picture(long pictureId, String mimeType, List<Installation> insts) {
this.pictureId = pictureId;
this.mimeType = mimeType;
this.installations = insts;
}
...
}
Конструктор предназначен исключительно для частичного выбора.
Я хотел бы иметь возможность сделать частичный выбор, который включает список Установок, но не данные изображения.Я попробовал очевидное решение:
Query q = em.createQuery("SELECT new Picture" +
"(p.pictureId, p.mimeType, p.installations) " +
" FROM Picture p WHERE p.pictureId = :id");
, но он утверждает, что не может найти конструктор.Если я не включаю установки в выборку, поле становится пустым, а не ленивым загрузчиком для списка.Я также попытался присоединиться к p.installations, и он все еще не может найти конструктор.Без списка Установок это работает прекрасно.
Есть ли способ добавить коллекцию в мой частичный выбор?
Спасибо, -Lars