[英]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.