gpt4 book ai didi

java - Hibernate/JPA 查询语言带有子查询的新实体构造函数 - 无法找到合适的构造函数

转载 作者:行者123 更新时间:2023-12-01 06:19:18 26 4
gpt4 key购买 nike

我有一个订单和订单欺诈警报。该关联仅从欺诈警报到订单运行,反之亦然。

public class FraudAlerts
...
@ManyToOne
@JoinColumn(name = "customerOrderId")
private CustomerOrder customerOrder;

我的查询是这样的:

"select new com.acme.struts.search.FraudOrderSearchViewModel"
+ "(co.orderId, co.orderPlacedDate, tot.totalIncVat, adr.email, co.customerNumber, co.ipAddress, "
+ "(select name from FraudAlerts where co.orderId = customerOrder))"
+ " from CustomerOrder as co join co.customerBillTo adr join co.originalTotal as tot");

您可以看到我使用子查询来获取与此订单关联的所有fraudAlert 名称作为集合,并将其传递给 View 模型bean FraudOrderSearchViewModel。

我的问题是 hibernate 找不到合适的构造函数并抛出异常:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [com.acme.struts.search.FraudOrderSearchViewModel] [select new com.acme.struts.search.FraudOrderSearchViewModel(co.orderId, co.orderPlacedDate, tot.totalIncVat, adr.email, co.customerNumber, co.ipAddress, (select name from com.acme.data.model.fraud.FraudAlerts where co.orderId = customerOrder)) from com.acme.data.model.customer.CustomerOrder as co join co.customerBillTo adr join co.originalTotal as tot]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1364)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy65.createQuery(Unknown Source)
at com.acme.services.fraud.FraudHibQueryTest.testFraudServiceHibQuery(FraudHibQueryTest.java:72)

我的构造函数如下:

    public FraudOrderSearchViewModel(final String orderId, final Date datePlaced, final BigDecimal originalTotal, final String customerEmail, final String customerId,
final String ipAddress, final Object[] holdReason)

我尝试了String[]、ListList,但没有成功。 hibernate 希望我使用什么类型的构造函数变量?

最佳答案

我发现我刚刚遇到了关系模型的限制。我试图获取数据库行的列表,其中每个行都包含一列,该列由另一个表中的多行组成。这是不可能通过一个查询来完成的。

关于java - Hibernate/JPA 查询语言带有子查询的新实体构造函数 - 无法找到合适的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194456/

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