主要是我使用JSF,所以我对这个注释主题是全新的
如果有人可以提供帮助
我想从这个查询中找到一个列表
SELECT f.CODE ,f.NAME || '-' || e.NAME
FROM FS.ELIGIBLE e RIGHT
OUTER JOIN FS.FINANCIAL_SUPPORT f ON e.CODE = f.CODE ;
上面的查询从两个表中检索一个列表并连接两个表的名称字段!!
我如何在JPA中使用Play Framework ???支持的其他查询?
2 个答案:
答案 0 :(得分:0)
阅读Play Framework documentation,特别是关于JPA and your Domain Model的部分。
您可以随时致电
来访问实体经理
EntityManager entityManager = JPA.em();
使用此功能,您可以创建所需的任何查询,甚至是“本机”查询。例如:
List<Object> results = JPA.em().createNativeQuery(
"SELECT f.CODE ,f.NAME || '-' || e.NAME "+
"FROM FS.ELIGIBLE e RIGHT "+
"OUTER JOIN FS.FINANCIAL_SUPPORT f ON e.CODE = f.CODE").getResultList()
答案 1 :(得分:0)
JPA不像关系数据库系统,你可以做你的查询,如连接,左连接或外连接,它是对象的映射技术。您也可以像那些RDBMS对应物一样进行相同的提取,但采用不同的方法。
你需要做的是创建一个Object然后将你的第二个Object与你的第一个Object相关联,这是关联2个或更多个对象的正确方法。我正在谈论的对象就是你的桌子。请参阅下面的示例:
- 表1:Items.java
- ...
- //在这里进行导入......
- //在这里做你的注释,如
- @Entity
- @Table(名称= “物品”)
- 公共类Items实现Serializable {
- private String id;
- private String itemno;
- 私有字符串描述;
- 私人套装&lt;供应商&gt;供应商; //这是第二个表(1:n关系)
- ...
- //不要忘记你的构造函数
- //在您的setter和供应商的getter中执行ff:
- @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
- @JoinColumn(name =“id”)
- public Set&lt;供应商&gt; getVendors(){
- 返回供应商;
- }
- public void setVendors(Set&lt; Vendors&gt;供应商){
- this.vendors = vendors;
- }
- ...
- }
醇>
表2:Vendors.java
- @Entity
- @Table(名称= “卖方”)
- 公共类供应商实现Serializable {
- private long id;
- 私人弦乐公司;
- 私人字符串联系;
- private String sequence;
- ...
- 公共供应商(){}
- ...
- //在你的setter&amp;吸气剂
- @Id
- public long getId(){
- return id;
- }
- public void setId(long id){
- this.id = id;
- }
- ...
- }
醇>
现在在查询中,只需按照ff:
进行常规选择
- public void makeQuery(String seq){
- EntityManagerFactory emf = Persistence.createEntityManagerFactory(...);
- EntityManager em = emf.createEntityManager();
- TypedQuery&LT;物品&GT; query = em.createQuery(“
SELECT i,j.contact,j.company,j.sequence FROM Items i LEFT OUTER JOIN i.vendors j WHERE i.vendors.sequence =:seq
- ORDER BY i.id“,Items.class);
- 列表与LT;物品&GT; items = query.setParameter(“sequence”,seq).getResultList();
- ...
- }
醇>
现在,您可以使用 items.vendors.company 等来参考您的第二个表供应商。等等。
这个的一个缺点是,JPA以Set的形式制作其相关对象,参见Table1(Items)中的声明 - 私有Set供应商。因为它是一个Set,所以序列不是按顺序接收的,与使用List不同。
希望这会有所帮助......
此致,Nelson Deogracias