我对Hibernate相当陌生,需要一些Hibernate映射的帮助。Hibernate使用hbm.xml将多个类映射到一个表
我有4个不同的类,我想映射到一个表中,其中主键由来自2个不同类的属性组成。同时,我只想将每个类的选定属性映射到本地数据库中。我希望避免JPA批注并改为在hbm.xml文件中定义映射样式。我怎么做?
采取下面的例子:
public class Tenant implements Serializable {
private final static long serialVersionUID = 1L;
protected List<Rack> rack;
protected String type;
//getters setters
}
public class Rack implements Serializable {
private final static long serialVersionUID = 1L;
protected List<Circuit> circuit;
protected String rackLabel;
protected Boolean excludes;
//getters setters
}
public class Circuit implements Serializable {
private final static long serialVersionUID = 1L;
protected List<CircuitReadings> circuitReadings;
protected String circuitNo;
protected Boolean excludes;
//getters setters
}
public class CircuitReadings
implements Serializable {
private final static long serialVersionUID = 1L;
protected String date;
protected String kva;
protected String current;
protected String kwh;
//getters setters
}
和最终表应包括以下的:以上
type | rackLabel | circuitNo | date | kva | current | energy
“circuitNo”和“日期”应形成复合主键。
有人可以告诉我如何映射这个例子吗?谢谢!
为什么要在一个表中添加所有四个类?从他们看的方式来看,所有班级之间都有多对一的关系。将它们全部添加到单个表格中将产生非标准化的表格。这在关系数据库中通常是一件坏事。 – 2012-01-05 07:07:44
这是因为我不想将所有属性存储到数据库,并且只需要选定的属性。我想要的属性在上面的表格描述中突出显示。我的解决方案是创建一个单独的方法,循环访问“Tenant”对象及其子类,并仅将要存储到数据库中的值合并到独立的类中,例如ClassA的。然后为ClassA创建一个hbm文件。我知道这样做并不理想,因此,我正在寻找更优化的解决方案。 – 2012-01-13 07:25:53