我需要映射两个类 Person 和 PersonAudit:
public class Person implements Serializable {
private int id;
private String name;
private PersonAudit personAudit;
public Person() {
}
//getters and setters omitted
}
public class PersonAudit implements Serializable {
private int id;
private Person person;
private String name;
private String user;
private Date date;
public PersonAudit() {
}
//getters and setters omitted
}
表 PersonAudit 存储了 Person 表上的历史更改。
考虑到 Person 表实际上没有任何引用 PersonAudit 表的列,是否可以映射Person.personAudit属性以始终获取最后一个审计寄存器?
我正在关注 Employee-Employment-Organization 文档的示例(http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#assoc-complex),但它似乎只有在 Employee表包含一个 orgId 列。
这是到目前为止 Person 类的映射:
<class catalog="test" name="test.Person" table="Person">
<id name="id" type="int">
<column name="Id"/>
<generator class="increment"/>
</id>
<property name="name" type="string">
<column length="30" name="Name" not-null="true"/>
</property>
<join table="PersonAudit">
<subselect>
select Id,IdPerson
from PersonAudit
group by IdPerson
having Id = max(Id)
</subselect>
<key column="Id" />
<many-to-one name="personAudit" class="test.PersonAudit" column="???"/>
</join>
</class>
所以,多对一不是要走的路,我该如何解决这种情况?
任何帮助我将不胜感激,在此先感谢。