JPA错误:加入的路径 [英] JPA Error: Path expected for join

查看:111
本文介绍了JPA错误:加入的路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的java spring mvc应用程序中,我有两个类:

  @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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆