Currently, when using batched updates and Hibernate detects stale state (e.g. data row concurrently deleted or deleted by JPQL executed with NO_FLUSH), failing SQL is not logged. However, when SQLException occurs, the failing SQL is logged (and that's so much convenient!).
Please have SQL logged when execution fails with other exceptions (like StaleStateException) too.