2010-05-21 73 views
-1

我已经使用JPA创建了两个表作为个人和地址。我想在这些表格之间给出一对多的关系。如果我在地址表中提供以下内容JPA关系

@OneToMany(mappedBy="address",targetEntity=person.class,fetch=FetchType.EAGER) 

表示它不能正常工作。谁能帮我?

在此先感谢。

+0

需要多一点的信息。在你声明地址的地方显示你的Person类的一个片段,并在你声明Person列表的地址类中显示一个片段。 – 2010-05-21 14:23:06

+0

什么是不正确的措辞?还请显示您的实体。 – 2010-05-21 17:45:50

+0

用这么小的描述来说几乎是不可能的。 – brandizzi 2011-03-21 19:40:39

回答

0

不知道任何关于你的架构,我会猜测你需要什么。

JPA足够聪明,知道如何加入你的表,所以如果你在两个表中都有id,你实际上不需要有“mappedBy”和“targetEntity”。

你只需要注释你的班级如下:(假设你的关系是一个地址有很多人)。

内的地址类:

@OneToMany 
@JoinColumn(name="address_id") 
public List<Person> getPeople() 
{ 
    return people; 
} 

这将会把ADDRESS_ID在你的个人表代表及其相关地址的字段。由于您正在声明Person JPA将知道映射到人员表的类型列表(只要Person类用@Entity正确注释)。

+1

如果该关联是双向的,那么您肯定需要'mappedBy'(或者这会导致两个单向关联)。 – 2010-05-21 17:44:25

+0

@Pascal Thivent根据OP提供的零信息做出了单向的假设。 如果是双向的,您还必须在人员等级和所有其他要求中注明地址... – kgrad 2010-05-21 20:14:37

0

这是一个例子

@ElementCollection 
@CollectionTable(name = "NUMBER") 
private List<String> number; 
+0

您可以添加更多解释吗? – 2016-07-26 19:58:43