I may be able to partially answer my questions about IDs. It does appear to be a problem.
I tried adding
Code:
<hibernate-mapping package="org.springframework.security.acls.model">
<class name="Acl" table="acl">
<id name="id" column="id">
</id>
</class>
</hibernate-mapping>
to hbm.xml and got an exception caused by:
org.hibernate.PropertyNotFoundException: field [id] not found on org.springframework.security.acls.model.Acl
The DTD seems to require and id but I was wondering whether it's possible to allow the subclasses to provide it?