Okay... this works. I created a "dummy" property that has no getters/setters:
Code:
private Person internalWorkaroundPerson;
I then created a read-only mapping:
Code:
<many-to-one name="internalWorkaroundPerson" class="Person" column="person_id" insert="false" update="false" access="field" />
And now the alias works:
Code:
final Criteria memberCriteria = session.createCriteria(Membership.class);
memberCriteria.createAlias("internalWorkaroundPerson", "prsn");
It's hack-ish, but it looks like it will work.
If anyone has alternatives, I'm open to suggestions.