簡體   English   中英

使用標准作為注釋的Hibernate / JPA

[英]Hibernate / JPA using criteria as annotations

有人知道是否可以通過注釋將標准強加於對象屬性。 這將類似於@Where子句,但是我需要過濾的屬性實際上不在執行SELECT的表上,因為它已被映射。

希望這個例子可以說明:

public class Container {

  @OneToMany(mappedBy = "container")
  private List<Item> items;

  //getter & setter ...

}

public class Item {

  @ManyToOne
  private Container container;

  @OneToOne(mappedBy = "item")
  private User user;

  //getter & setter ...

}

public class User {

  @OneToOne
  private Item item;

  //getter & setter ...

}

我想獲取一個沒有User關聯的Container 如果user屬性確實在Item表上,則應該可以使用@Where:

public class Container {

  @OneToOne(mappedBy = "container")
  @Where(clause = "user is null")
  private List<Item> items;

  //getter & setter ...

}

但是由於它是mappedBy,有沒有辦法做到這一點? 這些表上的聯接顯然已經在SQL中執行。 也許有一種方法可以引用user屬性,例如HQL?

任何幫助表示贊賞

HQL

select item.container from item i where i.user is null

Container.java

@NamedQueries({
    @NamedQuery(
    name = "findContainerWithNoUser",
    query = "select item.container from item i where i.user is null"
    )
})
@Entity
public class Container {

  @OneToOne(mappedBy = "container")
  private List<Item> items;

  //getter & setter ...

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM