获取路径的BeanDescriptor时出错

时间:2016-01-09 18:25:18

标签: java playframework ebean

我尝试使用Ebean ORM从数据库中获取一些数据。我有3个名为dealdeal_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时出错

我该如何解决这个问题?

1 个答案:

答案 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子句和获取)。