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。这样,即使超类在数据库中没有对应的表,照样可以实现关联。