用于循环关系的Hibernate映射

时间:2013-04-27 10:39:07

标签: hibernate

我正在学习hibernate,我正在开发一个非常小的项目用于学习目的。我有一个问题

我有两个项目     com.common.model     2. com.amar.model

在第一个项目(com.common.model)中有一个名为“Person.java”的类,它有自己的“Person.hbm.xml”文件。 此person类具有firstname,lastname等属性。此人有许多地址,如

public class Person {
private String fn;
private String ln;
private Set<Address> addresses;

//getters and setters
}

此地址类存在于第二个项目(com.amar.model)

public class Address {
private String street;
private String city;

private Person person; -- Cause for cyclic dependency. How can I avoid this cyclic dependency and how can I map these properties with hibernate ?

// getters and setters
}

此地址也有自己的“Address.hbm.xml”

这两个类都存在依赖关系。我的意思是一个人有多个地址,一个地址只与一个人有关。因此,如果我在Address类中添加一个人条目,它将显示循环依赖性错误。如果我在common.model包中移动这个地址类,我的问题将解决,但将来如果我遇到这个问题我怎么能克服这个问题。

那么我该如何避免这种情况呢?我如何为这两件事创建一个映射。

2 个答案:

答案 0 :(得分:0)

interfaceabstract class放入您的资源库,然后在其他项目中实施。

Address的{​​{1}} Personinterface

您的abstract class随后变为PersonPersonImplimplements Person

然后你必须使用one of the inheritance mapping strategies告诉hibernate。

答案 1 :(得分:0)

谢谢Boris,首先我需要再创建一个项目,我的前两个项目可以使用这个新项目。这个新项目有一个名为Person的新抽象类或接口,如此

在新项目中:

public abtsract class Person {
//properties

private Set<Address> addresses;

//getters and setters
}

在第一个项目中:

public class PersonImpl extends Person {

}

在第二个项目中:

public class Address {
// properties

private Person person;.
}

映射是通过“继承映射”这个概念完成的。是鲍利斯吗?