select p... 语句中的 "p" 是什么意思?

What means "p" in select p... statement?

private void addPersonToEvent(Long personId, Long eventId) {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();

    Person aPerson = (Person) session
            .createQuery("select p from Person p left join fetch p.events where p.id = :pid")
            .setParameter("pid", personId)
            .uniqueResult(); // Eager fetch the collection so we can use it detached
    Event anEvent = (Event) session.load(Event.class, eventId);

    session.getTransaction().commit();

此代码来自休眠参考。我不明白 "select p" SQL 语句中的 p 是什么意思。 "p"是什么?

这只是您将用来查询特定实体的别名。这些别名在 JPQL/HQL 中使用。这将被视为实体,您可以使用(点)来引用实体中的字段。

这是 Hibernate 查询语言或 HQL,不应像您正在做的那样简单SQL。

P 是 return 实体的别名。

HQL查询的基本解释(非SQL):

select p -- the entity to retrieve
from Person p -- Person entity aliased p
left join fetch p.events -- left join with entity Events, check the entity mapping between Person and Event entities
where p.id = :pid -- p.id is the field id from Person entity, :pid is a named parameter called pid

更多信息,请参考Hibernate HQL documentation