一个简单的例子——JPA@OneToMany正在为不存在的表生成SQL



我有一个简单的JPA项目正在运行(在WebSphere 7上使用IBM RAD 7.5)。

我有一个客户有很多订单。看起来像这样。。。

@Entity
public class Customer /* in table CC_CUSTOMER */
  @Id
  BigDecimal customerId;
  @OneToMany(fetch=FetchType.EAGER)
  private List<Order> orderList;

@Entity
public class Order /* in table CC_ORDER */
  @Id
  BigDecimal orderId;
  Customer customer;

我遇到的问题是,当我试图检索Customer时,我会遇到一个错误,因为JPA生成的SQL包含一个不存在的表的选择,该表名为:CC_Customer_CC_ORDER

我做错了什么?

谢谢!

Rob

Customer缺少@ManyToOne注释;并在@OneToMany注释上mappedBy="customer"

客户实体

@OneToMany(fetch=FetchType.EAGER, mappedBy="customer")
private List<Order> orderList;

订单实体

@ManyToOne
Customer customer;

正因为如此,JPA认为您的关系是单向的,这可以通过名为CC_CUSTOMER_CC_ORDER的联接表来解决。如果您让您的提供者生成模式,则应该生成表。

最新更新