HQL Subquery Query Select - PullRequest
       5

HQL Subquery Query Select

1 голос
/ 12 сентября 2011

Я всегда получаю ошибку слишком много столбцов , когда я выполняю этот запрос.

SELECT o FROM Overlay o WHERE ( :coordinate ) IN ELEMENTS(o.blocksCoordinates)

Если я делаю это в sql, это работает:

Select * from Overlay overlay0_ where (0,0) in (select x, y from ...

Координата - это простая встроенная сущность со значениями x и y.

@ElementCollection
private Set<Coordinate> blocksCoordinates = new HashSet<Coordinate>();

MyКоординатное лицо:

@Embeddable
public class Coordinate implements Serializable {
    private static final long serialVersionUID = -5866341829302555966L;

    protected int x;
    protected int y;

Что я делаю не так?

1 Ответ

1 голос
/ 12 сентября 2011

Попробуйте наоборот:

select o from Overlay o left outer join o.blocksCoordinates as c where c = :coordinate

Или с помощью ключевого слова with:

select o from Overlay o join o.blocksCoordinates as c with c = :coordinate

Использование этого запроса должно вернуть любое наложение, для которого соединение на c =координата выполнена успешно.

Редактировать: в качестве альтернативы попробуйте использовать значения x и y:

select o from Overlay o join o.blocksCoordinates as c with c.x = :x and c.y = :y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...