org.hibernate.QueryException: недопустимая попытка разыменования коллекции - ошибка SubQuery - PullRequest
1 голос
/ 18 июля 2011

Я пробую похожие вопросы, но безуспешно.Пожалуйста, может кто-нибудь помочь мне по этому вопросу.У меня есть следующие POJO:

@Entity
public class EntityA implements Serializable  {

private static final long serialVersionUID = 1L;


@Id
@GeneratedValue(strategy = GenerationType.AUTO) 
private int id;

@Column(length=9)
private String someField;

@Column(length=50)
private String anotherField;

Getters and Setters ......




    @Entity
    public class EntityB {


private static final long serialVersionUID = 1L;


@Id
@GeneratedValue(strategy = GenerationType.AUTO) 
private int id;


@OneToMany(cascade={CascadeType.ALL} )
private List<EntityA> listOfEntityA;


Getters and Setters ......

И я пытаюсь получить список объектов EntityA, которых нет в списке полей, содержащихся в EntityB

return (List<EntityA>) genericDAO.retrieveList("from EntityA e1 where e1.id not in ( select e2.listOfEntityA.id from EntityB e2 where e2.id =?1)" , myParamId );

, и перехватил исключение

org.hibernate.QueryException: illegal attempt to dereference collection

Уже пытался также без подзапроса, передавая в качестве параметра список объектов EntityA, содержащихся в поле entityB, но опять же без успеха.

Может кто-нибудь сказать мне, где я неправ1012 *

Заранее спасибо

1 Ответ

1 голос
/ 18 июля 2011

Попробуйте этот запрос:

String query =
    "SELECT entityA " +
    "FROM EntityA entityA " +
    "WHERE entityA.id NOT IN (" +
    "   SELECT entityAOfB.id " +
    "   FROM EntityB entityB " +
    "   JOIN entityB.listOfEntityA entityAOfB " +
    "   WHERE entityB.id = ?1";
    ")";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...