It seems like a Hibernate bug to me.
Code executed:
Code:
Owner owner = ownerManager.getOwner(1219L);
for (Building building : owner.getBuildings()) {
System.out.println(building.getName());
}
Produced SQL without the @Where-annotation:
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select buildings0_.owner_id as owner11_10_, buildings0_.id as id10_, buildings0_.id as id0_9_, buildings0_.streetName as streetName0_9_, buildings0_.streetNumber as streetNu3_0_9_, (...) left outer join FdvAdministration fdvadminis9_ on buildings0_.id=fdvadminis9_.building_id
where buildings0_.owner_id=? order by buildings0_.name asc
DONE.
Here is the produced SQL with the @Where(clause="1=1 OR 1=1") on owner.getBuildings()
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select buildings0_.owner_id as owner11_10_, buildings0_.id as id10_, buildings0_.id as id0_9_, buildings0_.streetName as streetName0_9_, (...) left outer join FdvAdministration fdvadminis9_ on buildings0_.id=fdvadminis9_.building_id
where 1=1 OR 1=1 and buildings0_.owner_id=? order by buildings0_.name asc
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
Hibernate: select owner0_.id as id24_0_, owner0_.name as name24_0_, (...)from ownertable owner0_ where owner0_.id=?
DONE.
Look at the where-clause when the annotation is used:
1=1 OR 1=1 and buildings0_.owner_id=?, which is the same as:
(1=1 OR (1=1 and buildings0_.owner_id=?) which is a tautology.
Hibernate should probably have placed parenthesis around the where-clause.