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>元素對應(yīng)的屬性。 //Getters and Setter 省略 }
上面提到了:假如為了讓Log能夠關(guān)聯(lián)業(yè)務(wù)類,就要求業(yè)務(wù)類都要繼續(xù)同一個超類,是不大合適的。不過,不合適的理由在于這個超類需要在數(shù)據(jù)庫有相應(yīng)的表。不能說,業(yè)務(wù)類不能繼續(xù)一個超類。實際上,很多應(yīng)用中的業(yè)務(wù)類都有超類,而且根據(jù)情況實現(xiàn)一些接口。此時的繼續(xù)映射策略是Hibernate Reference中的第三種:每個具體類一個表(table per concrete class)。上面MyLog中的logEntity的類型可以是更有意義的超類,如Entity,當(dāng)然也可以是接口,不必是Object。這樣,即使超類在數(shù)據(jù)庫中沒有對應(yīng)的表,照樣可以實現(xiàn)關(guān)聯(lián)。