Если вы хотите сохранить и получить свой пользовательский объект в качестве ключа в Map, тогда вы всегда должны переопределять equals и hashCode в своем пользовательском объекте. Например:
Person p1 = new Person("A",23);
Person p2 = new Person("A",23);
HashMap map = new HashMap();
map.put(p1,"value 1");
map.put(p2,"value 2");
Здесь p1 & amp; p2 будет считать, что только один объект и map
размер будут только 1, потому что они равны.
Во-первых, подзапросы в DQL невозможны. См. Выбор из подзапроса в DQL
Во-вторых, вы помещаете вычисляемый SQL из языка запросов Doctrine (DQL) в подзапрос. Это не работает, поскольку база данных не может найти столбец из-за того, что DQL префиксные символы / числовые значения столбцам.
Это значит, что сущности могут корректно отображаться при использовании DQL.
Вам нужно будет создать подзапрос NOT с использованием языка DQL (прекратите использование этого построителя запросов, не уверены, есть ли он, который строит необработанный SQL).