I\'m sligthly confused as to how the cascade=\"delete\" works. I defined the mapping in the following way in the City mapping file:
If you delete a city, then all clients will be deleted as well. If you delete a client, the city will be left alone.
session.delete() can't be called with a HQL query. You must pass it one city to delete.
Alternatively, you can use session.createSQLQuery() to create a delete statement. That allows you to delete many cities in one go. The drawback with this method is that you must delete the clients yourself and flush the cache (Hibernate makes no attempt to understand what your query might mean).