【问题标题】:Error mapping entities错误映射实体
【发布时间】:2014-02-26 13:12:30
【问题描述】:

我按照Programming Google App Engine 书中给出的示例在两个实体Book and BookReview 之间创建OneToMany 关系。在书中它是这样完成的:

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

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

然后对 book 类进行反向引用,如下所示:

@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"。它建议我改用cascade,fetch,optional,targetEntity 之一。我真的很困惑。我正在使用 Eclipse。

【问题讨论】:

    标签: java jpa persistence


    【解决方案1】:

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

    【讨论】:

    • 您的回答不是很有帮助。就像您在我的other 问题中所做的评论一样。如果我知道“非常清楚”错误的原因,我不会问这个问题。此外,我想知道为什么该示例在书中有效并且在我的代码中出现错误。
    • “mappedBy 应该在集合旁边”的哪一点让您感到困扰? Store 有一个 Collection 字段,没有“mappedBy”(但我告诉你,这是你应该放它的地方,就像任何体面的 JPA 文档一样),并且 Employee 有“mappedBy”,但这是非法的(如消息所示你)。这本书,如果它真的如你所说,有一个严重的错字(并且 Eclipse 显示该属性在 ManyToOne 中不存在的事实应该足以得出相同的结论)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-07-13
    • 2016-09-17
    相关资源
    最近更新 更多