JPA:NamedQuery中的LEFT JOIN

时间:2013-08-20 18:43:10

标签: jpa join named

我正在尝试在namedquery中的多个表上执行左外连接。我需要左外连接,因为并非所有“推车”都有“帽子”和“衬衫”。我简化了这个例子。我的模型看起来像这样:

@Entity
public class Cart {


  @ManyToOne(targetEntity = Shirt.class, optional = true)
  @JoinColumn(nullable = true, insertable = false, updatable = false)
  private Shirt shirt;

  @ManyToOne(targetEntity = Hat.class, optional = true)
  @JoinColumn(nullable = true, insertable = false, updatable = false)
  private Hat hat;

  ...
}

我的查询如下所示:

<query>
  SELECT
    _cart
  FROM
    Cart _cart
  LEFT JOIN
    _cart.hat _hat
  LEFT JOIN             
    _cart.shirt _shirt
  WHERE
    _hat.size = 's' OR _shirt.color = 'red'
</query>

我遇到的问题是LEFT JOIN和INNER JOIN(两个表连接两次)生成的查询。在手动输入那些左连接之前,我在@ManyToOne上尝试了“可选”属性,但它没有改变连接类型。

我正在使用最新版本的TomEE和OpenJPA。

感谢您的帮助。

0 个答案:

没有答案