在我的java spring mvc应用程序中,我有两个类:
@Entity
public class Transactions {
@Id
@GeneratedValue
long id;
@OneToOne
Customer customer;
@OneToOne
Merchant merchant;
double value;
}
,客户类是:
@Entity
public class Customer {
@Id
@GeneratedValue
long id;
String name;
String ageClass;
String language;
String cardUserArea;
}
交易的存储库是:
@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);
}
但它抱怨道:
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 ]
查询针对数据库成功运行
答案 0 :(得分:2)
答案是使用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);
答案 1 :(得分:0)
以下代码是ex。实体和与其他实体的关系: -
@Entity
@Table(name = "F_AREA")
@NamedQuery(name = "FArea.findAll", query = "SELECT f FROM FArea f")
public class FArea implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "F_AREA_AREAID_GENERATOR", sequenceName = "SEQ_F_AREA")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "F_AREA_AREAID_GENERATOR")
@Column(name = "AREA_ID")
private long areaId;
@Column(name = "AREA_NAME_EN")
private String areaNameEn;
@Column(name = "AREA_STATUS")
private BigDecimal areaStatus;
@Column(name = "AREA_UPDATED_DATE")
private Timestamp areaUpdatedDate;
// bi-directional many-to-one association to FCity
@ManyToOne
@JoinColumn(name = "CITY_ID")
private FCity FCity;
// bi-directional many-to-one association to FCustomer
@OneToMany(mappedBy = "FArea")
private List<FCustomer> FCustomers;
.
.
.
.
}
答案 2 :(得分:0)
请用此更新您的查询:
@Query("select sum(t.value) from Transactions t inner join t.customer c where c.id= ?1 and c.ageClass= ?2 ")
public Double getOverAllValue(long merchantID,String ageGroup);