Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.hibernate.hql.ast.QuerySyntaxException:意外令牌_Java_Sql_Hibernate_Jsp_Hql - Fatal编程技术网

Java org.hibernate.hql.ast.QuerySyntaxException:意外令牌

Java org.hibernate.hql.ast.QuerySyntaxException:意外令牌,java,sql,hibernate,jsp,hql,Java,Sql,Hibernate,Jsp,Hql,我正在使用Struts2和Hibernate,出现以下错误: org.hibernate.hql.ast.QuerySyntaxException:意外标记:在第1行第61列附近[从站点中选择s.codeOracle作为s内部连接控件作为c.idSite上的c=s.idSite内部连接对作为p.idcontrat=c.idcontrat内部连接周期上的p作为pp.idPaItem=p.idPaItem,其中pp.statutPay=1 group by s.codeOracle] 位于org.h

我正在使用Struts2和Hibernate,出现以下错误:

org.hibernate.hql.ast.QuerySyntaxException:意外标记:在第1行第61列附近[从站点中选择s.codeOracle作为s内部连接控件作为c.idSite上的c=s.idSite内部连接对作为p.idcontrat=c.idcontrat内部连接周期上的p作为pp.idPaItem=p.idPaItem,其中pp.statutPay=1 group by s.codeOracle]
位于org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
位于org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
我有这个方法:

@覆盖
公共列表列表搜索(){
列表站点=空;
String query=“从站点中选择s.codeOracle作为s内部联接控件作为c.idSite上的c=s.idSite内部联接对作为p.idcontrat=c.idcontrat内部联接周期作为pp.idPaItem=p.idPaItem上的pp,其中pp.stateTPay=1由s.codeOracle分组”;
试一试{
site=session.createQuery(query.list();
}捕获(例外e){
e、 printStackTrace();
}
返回站点;
}
触发代码定义了类之间的关系:

@实体
@表(name=“站点”)
公共类网站{
私人长站点;
私设合同;
@身份证
@生成值
@列(name=“idSite”)
公共长getIdSite(){
返回idSite;
}
@OneToMany(mappedBy=“siteMaping”)
公共集getContratMaping(){
返回对映;
}
}
对照班:

@实体
@表(name=“contart”)
公共类合同{
私人长途电话;
私人保释金;
私有站点站点映射;
私有集对映射;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getidcontract(){
返回idcontract;
}       
@OneToMany(mappedBy=“contratMaping”)
公共集getPaiementMap(){
返回paiementMap;
}
@许多酮
@JoinColumn(name=“idBailleur”)
公共Bailleur getBailleurMaping(){
返回bailleurMaping;
}
@许多酮
@JoinColumn(name=“idSite”)
公共站点getSiteMaping(){
返回站点映射;
}
}
付款类别:

@实体
@表(name=“Paiement”)
公共类支付{
私人长期保险;
私人合同;
私有设置周期映射;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idPaiement”)
公共长getIDpaItem(){
退货;
}   
@OneToMany(mappedBy=“paimentMaping”)
公共集getPeriodiePaymap(){
返回周期映射;
}
@许多酮
@JoinColumn(name=“idcontrat”)
公共合同GetContratMapping(){
返回对映;
}
}
定期班:

@实体
@表(name=“periodipay”)
公共课周期表{
私人长期居留;
私人支付支付映射;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idPeriodePay”)
公共长getIdPeriodePay(){
退还分期付款;
}
@许多酮
@JoinColumn(name=“idPaiement”)
publicpaiement getPaimentMaping(){
返回paymentmaping;
}
}
此查询在phpmyadmin中工作良好; 你能告诉我怎么了吗

编辑1:

我试着让自己不犯错误:

public List listSearch(){
列表站点=空;
试一试{
site=session.createSQLQuery(“从站点中选择*作为s”+
“c.idSite=s.idSite上作为c的内部联接控件”+
“p.idcontract=c.idcontract上作为p的内部联接对”+
“内部连接周期在pp.IDPAIENT=p.IDPAIENT上显示为pp”+
“其中pp.StateTPay=1组由s.codeOracle”).list();
对于(对象[]arr:站点){
System.out.println(“Select*FROM sites”+Arrays.toString(arr));
}
}捕获(例外e){
e、 printStackTrace();
}
返回站点;
}
我在控制台中得到结果:

INFOS:至少有一个JAR扫描了TLD,但没有包含TLD。为此记录器启用调试日志记录以获取已扫描的JAR的完整列表,但未找到TLD。在扫描过程中跳过不需要的JAR可以缩短启动时间和JSP编译时间。
休眠:从站点中选择*作为s内部连接控件作为c上的c.idSite=s.idSite内部连接对作为p上的p.idcontract=c.idcontract内部连接周期作为pp在pp.idPaiement=p.idPaiement中pp.statutPay=1按s.codeOracle分组
从站点中选择*[1,Agadir,,Aga-1212,Aga-1212,2015-07-05,false,,,1,7,100.0,2016-01-01,2015-07-01,2017-06-30,440.0,null,null,0.0,1,null,null,null,null,null,null,null,null,null,13,null,null,null,null,null,null,null,null,null,null,testhamza,null,null,null,null,null,2,7,28,null,2640.0,0,0,0,0,null,13,2016-01-01,2017-06-30]
但是使用jsp我无法在数据表中得到结果,也许我必须修复迭代器


代码预言家
代码GSM
地区
红枣
Query query = session.createQuery(hql);
List results = query.list();

//join examples
query = session.createQuery("select e.name, a.city from Employee e "
           + "INNER JOIN e.address a");
List<Object[]> list = query.list();
for(Object[] arr : list){
      System.out.println(Arrays.toString(arr));
}
private List<Object[]> searchsiteList = new ArrayList<Object[]>(); 

public List<Object[]> getSearchsiteList() { return searchsiteList; }
public List<Map<String, Object>> convertToMapsList(List<Object[]> list){
  List<Map<String, Object>> res = new ArrayList<>();
  for(Object[] arr : list){
    Map<String, Object> map = new HashMap<>();
    map.put("codeOracle", arr[0]);
    map.put("codeGSM", arr[1]);
    map.put("area", arr[2]);
    map.put("dateMiseOnAir", arr[3]);
    res.add(map);
  }
  return res;
}
public List<Map<String, Object>> getSearchsiteList() { return convertToMapsList(searchsiteList); }