gpt4 book ai didi

java - hibernate查询多个对象选择

转载 作者:行者123 更新时间:2023-12-01 15:14:53 25 4
gpt4 key购买 nike

我有一个像这样的实体模型:

public class Facture implements Serializable 
{
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_FACTURE")
private long idFacture;
...

private Panier panier;
...
}

public class Panier
{
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_PANIER")
private long idPanier;

@ManyToOne
private Client client;
@OneToMany
private List<LignePanier> articles = new ArrayList<LignePanier>();
...
}

public class Client
{
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_CLIENT")
private long idClient;
...
}

所以我想查询客户端X的所有事实。我尝试这样的事情:

 public List<Facture> listeFacture(Long clientID) {
List<ParameterMap> parameters = new ArrayList<ParameterMap>();
parameters.add(new ParameterMap(StandardBasicTypes.LONG, clientID));
return dao.query("select facture from Facture facture where facture.panier.client.idClient = ?", parameters);
}

我得到这个异常:

  org.hibernate.QueryException: could not resolve property: client of: be.infoserv.web.model.Facture [select facture from be.infoserv.web.model.Facture facture where facture.panier.client.idClient = ?]

我认为不可能通过这样的对象查询,但我不知道如何编写这个查询...

抱歉我的英语不好,我是法语用户。

最佳答案

您可能必须使用内部联接来执行此操作:

select facture
from Facture facture
inner join facture.panier as panier
inner join panier.client as client
where client.clientId = ?

或者使用更安全的标准,因为你不能搞乱 hql:

Criteria factureCrit = session.createCriteria(Facture.class);
Criteria panierCrit = factureCrit.createCriteria("panier");
Criteria clientCrit = panierCrit.createCriteria("client");
clientCrit.add(Restrictions.idEq(clientId));

return factureCrit.list();

关于java - hibernate查询多个对象选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com