JPA错误:加入的路径 [英] JPA Error: Path expected for join
本文介绍了JPA错误:加入的路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
@Entity
public class Transactions {
@Id
@GeneratedValue
long id;
@OneToOne
客户客户;
@OneToOne
商家商家;
double value;
}
和客户类别是:
@Entity
公共类客户{
@Id
@GeneratedValue
long id ;
字符串名称;
字符串ageClass;
字符串语言;
String cardUserArea;
$ / code>
交易的存储库是:
@Repository
public interface TransactionRepository扩展JpaRepository< Transactions,Long> {
@Query(SELECT总和(价值)从交易内部加入客户Transactions.customer_id = Customer.id其中merchant_id =?1和age_class =?2)
public double getOverAllValue(String merchantID,String ageGroup);
}
但抱怨:
org.hibernate.hql.internal.ast.QuerySyntaxException:加入的路径! [SELECT sum(value)FROM ee.seb.domain.Transactions inner join Customer.customer_id = Customer.id where merchant_id =?1 and age_class =?2]
查询对数据库运行成功
解决方案
答案在于使用 nativeQuery
@Query( value =SELECT sum(value)FROM Transactions Transactions within Customer Customer.customer_id = Customer.id其中merchant_id =?1和age_class =?2,nativeQuery = true)
public double getOverAllValue(String merchantID,String ageGroup );
In my java spring mvc application, i have two classes:
@Entity
public class Transactions {
@Id
@GeneratedValue
long id;
@OneToOne
Customer customer;
@OneToOne
Merchant merchant;
double value;
}
and the customer class is:
@Entity
public class Customer {
@Id
@GeneratedValue
long id;
String name;
String ageClass;
String language;
String cardUserArea;
}
The repository for the Transactions is:
@Repository
public interface TransactionRepository extends JpaRepository<Transactions ,Long >{
@Query("SELECT sum( value) FROM Transactions inner join Customer on Transactions.customer_id=Customer.id where merchant_id= ?1 and age_class= ?2 ")
public double getOverAllValue(String merchantID,String ageGroup);
}
But it complains with:
org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [SELECT sum( value) FROM ee.seb.domain.Transactions inner join Customer on Transactions.customer_id=Customer.id where merchant_id= ?1 and age_class= ?2 ]
The query runns successfully against the database
解决方案
The answer was in using nativeQuery
@Query(value = "SELECT sum( value) FROM Transactions inner join Customer on Transactions.customer_id=Customer.id where merchant_id= ?1 and age_class= ?2 ", nativeQuery=true)
public double getOverAllValue(String merchantID,String ageGroup);
这篇关于JPA错误:加入的路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文