Ну, я не могу дать конкретное руководство, не зная больше о вашем конкретном случае. Похоже, вы используете реализацию JPA Hibernate. Вы можете попробовать другие реализации JPA, если в Hibernate есть что-то, что вам не нравится. Что касается интерфейса запросов, если запросы JPA не выполняют то, что вы хотите, у вас всегда есть возможность получить простое старое соединение и работать с этим. Гениальность фреймворка в том, что, по крайней мере, вам больше не нужно писать весь код CRUD. Я бы никогда не сказал, что JPA совершенен, но это лучше, чем все время писать SQL вручную, чтобы делать тривиальные вещи.