我尝试使用Ebean ORM从数据库中获取一些数据。我有3个名为deal
和deal_company_branch
以及company_branch
的表。 deal_company_branch
是关联实体。我写了一个查询来获取数据,
select d.* from deal d, deal_company_branch dcb where d.deal_id=dcb.dealId and dcb.branchId=3
然后我尝试使用Ebean ORM做同样的事情,如下,
DealDAO.find.fetch("deal").fetch("deal_company_branch").where()
.and(Expr.eq("deal.deal_id", "deal_company_branch.dealId")
, Expr.eq("deal_company_branch.branchId", branchId)).findList();
当我执行此操作时,我正在接受,
错误:检索类别时出错:从com.de.models.Deal获取路径交易的BeanDescriptor时出错
我该如何解决这个问题?
答案 0 :(得分:0)
所以:
(Expr.eq("deal.deal_id", "deal_company_branch.dealId")
...当它应该是一个属性名称时,它看起来像一个表名,它是可选的,所以除非你真的想要获取那些数据,否则你可能最好不要这样做。
。和Expr.eq("deal_company_branch.branchId", branchId)).findList();
...你应该完全放弃
ManyToMany
...再次看起来像是table.column参考而不是逻辑属性路径。
这几乎看起来像DealDAO.find.where().eq("companies.branch.id", branchId).findList();
关系,但你并不包括你的模特。在大多数情况下,对于ORM查询,您应该包含模型对象,以便人们可以更好地理解您要执行的操作。
看起来你应该这样做:
let mut res = client.get("http://httpbin.org/get?screen_name=twitter")
.header(Authorization(authorization_header))
.send().unwrap();
这假设交易实体有一个@ManyToMany到"公司"它有@ManyToOne到"分支"它有一个@Id id属性。
Ebean将从属性路径(" companies.branch.id")了解它需要做什么来支持where子句(以及order by子句和获取)。