Сложный ключ запроса гибернации

Я пытаюсь выполнить сложный ключевой запрос с помощью @embeddable.

Вот что я до сих пор.

@Embeddable
public class IfasvVendorPK implements Serializable{

@Column(length = 4, nullable = false)
protected String peId;
@Column(length = 8, nullable = false)
protected String peAddrCd;

сущность

@Entity
public class IfasvVendor implements Serializable {

@EmbeddedId
private IfasvVendorPK ifasvVendorPK;

запрос

Список содержит два pks. Не уверен, что я должен использовать список для этого.

Query query = session.createQuery("from IfasvVendor t0 where t0.ifasvVendorPK.peId=:id");
 query.setParameter("id", list);
 query.list();

Я также не был уверен, как получить объект, как только я получу запрос.

1 ответ

Я считаю, что следующее должно работать:

Query query = session.createQuery("from IfasvVendor t0 where t0.ifasvVendorPK.peId in (:id)");
query.setParameterList("id", list);

query.list();

Вы должны заключить именованный параметр в круглые скобки в свой запрос и использовать setParameterList. См. Javadoc для setParameterList здесь.

Результаты запроса будут в списке, возвращаемом: query.list(). Это возвращает неконтролируемый список, который вы можете использовать в List.

Кстати. это не сложный ключевой запрос. см. комментарий @Perception...

licensed under cc by-sa 3.0 with attribution.