0

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

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

在第一个项目(com.common.model)中有一个名为“Person.java”的类,它有自己的“Person.hbm.xml”文件。这个人类有一个名字,姓氏等属性。这个人有很多地址,比如

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”

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

那么如何避免这种情况,以及如何为这两件事创建映射。

4

2 回答 2

0

谢谢鲍里斯,所以首先我需要再创建一个项目,这个新项目可以被我的前两个项目使用。这个新项目有一个新的抽象类或接口,称为 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;.
}

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

于 2013-04-27T11:52:16.477 回答
0

interfaceorabstract class放入您的库中,然后在您的其他项目中实现它。

你的Addresswith 有一个Personwhich 是一个interfaceor abstract class

你的Person然后变成PersonImpland implements Personor extends Person

然后,您必须使用其中一种继承映射策略告诉 hibernate 。

于 2013-04-27T10:50:00.337 回答