public class BizOne { PRivate Long id; private String bizOneDescription; //Getters and Setters 省略 } public class BizTwo { private Long id; private String bizTwoDescription; private Date createDate; //Getters and Setters 省略 }
日志類: java代碼:
public class MyLog { private Long id; private Date logDate; private Object logEntity; //這就是<any>元素對應的屬性。 //Getters and Setter 省略 }
上面提到了:假如為了讓Log能夠關聯業務類,就要求業務類都要繼續同一個超類,是不大合適的。不過,不合適的理由在于這個超類需要在數據庫有相應的表。不能說,業務類不能繼續一個超類。實際上,很多應用中的業務類都有超類,而且根據情況實現一些接口。此時的繼續映射策略是Hibernate Reference中的第三種:每個具體類一個表(table per concrete class)。上面MyLog中的logEntity的類型可以是更有意義的超類,如Entity,當然也可以是接口,不必是Object。這樣,即使超類在數據庫中沒有對應的表,照樣可以實現關聯。