В общем случае вы не можете удалить псевдоним, сгенерированный hibernate.
Представьте, что у нас есть следующая сущность:
@Entity
@Table(name = "TEST_MESSAGE")
public class Message
{
@Id
@Column(name = "MSG_ID")
private Long id;
@Column(name = "MSG_TEXT")
private String text;
@ManyToOne
@JoinColumn(name="MSG_PARENT_ID")
private Message parent;
...
}
и следующий критерий запроса:
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createQuery(Tuple.class);
Root<Message> root = criteria.from(Message.class);
Path<Long> id = root.get("id");
Path<Message> parent = root.get("parent");
criteria.multiselect(id, parent);
criteria.where( builder.equal( root.get("id"), 2) );
List<Tuple> tuples = session.createQuery( criteria ).getResultList();
...
Hibernate сгенерирует для него следующее sql:
select
message0_.MSG_ID as col_0_0_,
message0_.MSG_PARENT_ID as col_1_0_,
message1_.MSG_ID as MSG_ID1_0_,
message1_.MSG_PARENT_ID as MSG_PARENT_ID3_0_,
message1_.MSG_TEXT as MSG_TEXT2_0_
from TEST_MESSAGE message0_
inner join TEST_MESSAGE message1_ on message0_.MSG_PARENT_ID = message1_.MSG_ID
where message0_.MSG_ID = 2
Как видите, если мы просто удалим все псевдонимы (message0_
, message1_
, ...) запроса будет недействительным. Эта статья проливает дополнительный свет на этот вопрос.