2014-02-26 431 views
0

上午下面的例子中创建两个实体之间Book and BookReview。在这本书有人这样做了OneToMany关系:映射实体

@Entity(name="Book") 
public class Book { 
.... 

@OneToMany(cascade=CascadeType.ALL) 
private List<BookReview> bookReviews; 
} 

,然后回上,参考书类是这样的:

@Entity(name="BookReview") 
public class BookReview { 
... 
@ManyToOne(mappedBy="bookReviews") 
private Book book; 
} 

但是当我尝试这个

@Entity 
public class Store { 

@Id 
String storeName; 

@OneToMany 
private List<Employee> employees; 

} 
//////////// 
@Entity 
public class Employee { 


@Id 
int employeeId; 

@ManyToOne(mappedBy="employees") 
private Store store; 

}

@ManyToOne(mappedBy="employees")标有一个错误说"The attribute mappedBy is undefined for the annotation type ManyToOne"。而且它建议我使用Eclipse使用cascade,fetch,optional,targetEntity instead.Am真糊涂here.Am之一。

回答

-1

任何不错的JPA文档都会告诉您,1-N bidir关系需要mappedBy与集合一方。错误信息也很清楚

+0

你的回答是不是很有帮助。就像你在我的[其他](http://stackoverflow.com/questions/22009499/modeling-relationships-jpa-between-如果我知道“非常明确”的错误的原因,我不会问这个问题。另外,我想知道为什么这个例子在书中的作品,并给出了一个错误在我的代码中。 –

+0

“mappedBy应该位于Collection的哪一侧”对您来说有点麻烦? Store有一个Collection字段,没有“mappedBy”(但我告诉你,这是你应该把它放在哪里,就像任何正派的JPA文档一样),Employee有“mappedBy”,但这是非法的(正如消息告诉您)。这本书,如果它真的说出你所说的话,会有严重的错误(并且Eclipse显示ManyToOne中不存在这个属性应该足以得出结论) – DataNucleus