Description
Code to reproduce the error:
criteria.add(BookPeer.AUTHOR_ID, authorId);
criteria.addJoin(AuthorPeer.AUTHOR_ID, BookPeer.AUTHOR_ID);
// the following is not needed from a SQL point of view but to generate the unexpected behaviour
criteria.add(AuthorPeer.AUTHOR_ID, authorId);
BookPeer.doDelete(criteria);
Additionally to deleting the chosen books, this will also delete the corresponding authors. What happens is that the criteria gets passed to BasePeer, which tries to figure the table to delete from from the criteria alone. But as it contains two tables in the where clause, it does not know which one is the right table, and deletes the data from both tables.