[英]JPQL with inheritence in JPA
我有這些實體:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Item implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false)
@NotNull
private String title;
@Column(nullable = false)
@NotNull
private Integer price;
}
@Entity
public class Book extends Item implements Serializable{
@Column(nullable = false)
@NotNull
private String isbn;
@Column(nullable = false)
@NotNull
private String language;
}
我的問題是:
對於Namedquery,我必須將它們放在項目實體或書本實體中?
例如,如果我必須搜索price = 30的書,則此namedquery必須在超類中還是在子類中?
我們知道我們在數據庫Item中將只有一個表,如何使用這種架構來管理jpql。
編輯:如果我有這個問題:搜索價格為30的書,
我可以使用此namedquery進行響應嗎:
@NamedQuery(name=Book.FIND_BY_PRICE,query="select b from Book b where b.price = :bprice")
要么 :
@NamedQuery(name=Book.FIND_BY_PRICE,query="select i from Item i where i.dtype='book' and i.price = :bprice")
您可以將命名查詢放在所需的任何實體類中。 由於命名查詢是關於尋找書籍的,因此將其放在Book實體中。
關於JPQL查詢,您可以將它們與其他任何JPQL查詢一樣編寫:使用實體名稱和字段,並借助JPA實現對它們的映射和繼承關系的了解,讓JPA實現生成適當的SQL。
不過,我要做的第一件事是將item類重命名為Item,以遵守Java命名約定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.