简体   繁体   English

从数据库中选择值的异常

[英]Exception in selecting values from database

I have written a query to fetch values from database and is to be shown in datagrid in jsf page. 我编写了一个查询以从数据库中获取值,并将在jsf页面的datagrid中显示。 But i am raised with exception in daoimpl layer. 但是我在daoimpl层中异常地长大了。 While converting stringbuffer to string and getting it in array i raise with errors.Please spot the mistake i have did 在将stringbuffer转换为string并将其放入数组时,我提出了error.Please指出我所做的错误

DaoImpl.Java 道教Java

@SuppressWarnings({ "unchecked", "null" })
      @Override
      public List<Barragedetail> searchBarDetails(String offCode) throws Exception {
            System.out.println("Entering AssetDaoImpl");
            System.out.println("Office Code"+offCode);
            List<Barragedetail> barrageBList = null;
            try {
                  barrageBList = new ArrayList<Barragedetail>();
                  StringBuffer queryInfo = new StringBuffer();
                  Query query = null;
                  queryInfo.append(" FROM Eimsuser eu,Barragedetail bd");
                  queryInfo.append(" where eu.usercode = bd.userid");
                  /*if( offCode != null ) {
                        queryInfo.append(" and bd.officecode =:officCode ");
                        //query.setParameter("password", password); 
                        }*/
                        System.out.println("String Buffer"+queryInfo.toString());
                        /*if(offCode != null ) { 
                        query.setParameter("officCode",offCode); 
                        }*/
                        query = entityManager.createQuery(queryInfo.toString()); 
                  barrageBList=query.getResultList();
                  System.out.println("Barrage Size " + barrageBList.size());
                  for (Barragedetail barragedetail : barrageBList) {
                        System.out.println("BarrageName "+ barragedetail.getBarragename());
                        System.out.println("Head Work Type "+ barragedetail.getHeadwrktype());
                  }

            } catch (Exception e) {
                  e.printStackTrace();
                  System.out.println("Exception"+e.getMessage());
            }
            return barrageBList;

      }

StackRace StackRace

String Buffer FROM Eimsuser eu,Barragedetail bd where eu.usercode = bd.userid
java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: userid of: org.gov.tnwrd.entity.Barragedetail [ FROM org.gov.tnwrd.entity.Eimsuser eu,org.gov.tnwrd.entity.Barragedetail bd where eu.usercode = bd.userid]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1222)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
    at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:271)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
    at $Proxy114.createQuery(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
    at $Proxy114.createQuery(Unknown Source)
    at org.gov.tnwrd.dao.AssetDaoImpl.searchBarrageDetails(AssetDaoImpl.java:42)
    at org.gov.tnwrd.service.AssetServiceImpl.searchBarrageDetails(AssetServiceImpl.java:31)
    at org.gov.tnwrd.action.AssetAction.searchBarrage(AssetAction.java:115)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.QueryException: could not resolve property: userid of: org.gov.tnwrd.entity.Barragedetail [ FROM org.gov.tnwrd.entity.Eimsuser eu,org.gov.tnwrd.entity.Barragedetail bd where eu.usercode = bd.userid]
    at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
    at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
    at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1465)
    at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:315)
    at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:487)
    at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:611)
    at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:263)
    at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:210)
    at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
    at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
    at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:880)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1330)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
    at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:268)
    ... 43 more
Exceptionorg.hibernate.QueryException: could not resolve property: userid of: org.gov.tnwrd.entity.Barragedetail [ FROM org.gov.tnwrd.entity.Eimsuser eu,org.gov.tnwrd.entity.Barragedetail bd where eu.usercode = bd.userid]

BarrageDetail.java BarrageDetail.java

package org.gov.tnwrd.entity;

import java.io.Serializable;
import javax.persistence.*;


/**
 * The persistent class for the barragedetails database table.
 * 
 */
@Entity
@Table(name="barragedetails")
public class Barragedetail implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(unique=true, nullable=false)
    private Integer barrageid;

    @Column(length=80)
    private String barragename;

    @Column(length=80)
    private String headworkdt;

    @Column(length=80)
    private String headwrktype;

    @Column(length=80)
    private String latitude;

    @Column(length=80)
    private String location;

    @Column(length=80)
    private String longitude;

    private Integer maxcanalgaugread;

    private Integer maxcanalheaddisch;

    private Integer maxdischdown;

    private Integer maxdowngaugeread;

    @Column(length=80)
    private String maxgaugeupstream;

    @Column(length=80)
    private String officecode;

    @Column(length=50)
    private String season;

    //bi-directional many-to-one association to Block
    @ManyToOne
    @JoinColumn(name="blockid")
    private Block block;

    //bi-directional many-to-one association to District
    @ManyToOne
    @JoinColumn(name="districtid")
    private District district;

    //bi-directional many-to-one association to Division
    @ManyToOne
    @JoinColumn(name="divisionid")
    private Division division;

    //bi-directional many-to-one association to Eimsuser
    @ManyToOne
    @JoinColumn(name="userid")
    private Eimsuser eimsuser;


    //bi-directional many-to-one association to Section
    @ManyToOne
    @JoinColumn(name="sectionid")
    private Section section;

    //bi-directional many-to-one association to Taluk
    @ManyToOne
    @JoinColumn(name="talukid")
    private Taluk taluk;

    public Barragedetail() {
    }

    public Integer getBarrageid() {
        return this.barrageid;
    }

    public void setBarrageid(Integer barrageid) {
        this.barrageid = barrageid;
    }

    public String getBarragename() {
        return this.barragename;
    }

    public void setBarragename(String barragename) {
        this.barragename = barragename;
    }

    public String getHeadworkdt() {
        return this.headworkdt;
    }

    public void setHeadworkdt(String headworkdt) {
        this.headworkdt = headworkdt;
    }

    public String getHeadwrktype() {
        return this.headwrktype;
    }

    public void setHeadwrktype(String headwrktype) {
        this.headwrktype = headwrktype;
    }

    public String getLatitude() {
        return this.latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public String getLocation() {
        return this.location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getLongitude() {
        return this.longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public Integer getMaxcanalgaugread() {
        return this.maxcanalgaugread;
    }

    public void setMaxcanalgaugread(Integer maxcanalgaugread) {
        this.maxcanalgaugread = maxcanalgaugread;
    }

    public Integer getMaxcanalheaddisch() {
        return this.maxcanalheaddisch;
    }

    public void setMaxcanalheaddisch(Integer maxcanalheaddisch) {
        this.maxcanalheaddisch = maxcanalheaddisch;
    }

    public Integer getMaxdischdown() {
        return this.maxdischdown;
    }

    public void setMaxdischdown(Integer maxdischdown) {
        this.maxdischdown = maxdischdown;
    }

    public Integer getMaxdowngaugeread() {
        return this.maxdowngaugeread;
    }

    public void setMaxdowngaugeread(Integer maxdowngaugeread) {
        this.maxdowngaugeread = maxdowngaugeread;
    }

    public String getMaxgaugeupstream() {
        return this.maxgaugeupstream;
    }

    public void setMaxgaugeupstream(String maxgaugeupstream) {
        this.maxgaugeupstream = maxgaugeupstream;
    }

    public String getOfficecode() {
        return this.officecode;
    }

    public void setOfficecode(String officecode) {
        this.officecode = officecode;
    }

    public String getSeason() {
        return this.season;
    }

    public void setSeason(String season) {
        this.season = season;
    }

    public Block getBlock() {
        return this.block;
    }

    public void setBlock(Block block) {
        this.block = block;
    }

    public District getDistrict() {
        return this.district;
    }

    public void setDistrict(District district) {
        this.district = district;
    }

    public Division getDivision() {
        return this.division;
    }

    public void setDivision(Division division) {
        this.division = division;
    }

    public Eimsuser getEimsuser() {
        return this.eimsuser;
    }

    public void setEimsuser1(Eimsuser eimsuser) {
        this.eimsuser = eimsuser;
    }



    public Section getSection() {
        return this.section;
    }

    public void setSection(Section section) {
        this.section = section;
    }

    public Taluk getTaluk() {
        return this.taluk;
    }

    public void setTaluk(Taluk taluk) {
        this.taluk = taluk;
    }

}

It looks like your Barragedetail class might not have the userid field properly mapped. 看来您的Barragedetail类可能未正确映射userid字段。

Without seeing that class - it would be difficult to confirm though. 没有看到该类-尽管很难确认。

You do not have an attribute in BarrageDetail called userid, instead you have a eimsuser that uses a userid database field. 您在BarrageDetail中没有名为userid的属性,而是具有一个使用userid数据库字段的eimsuser。 JPA uses the entity attributes in queries, not the database fields, so you will need to define your query differently. JPA在查询中使用实体属性,而不是在数据库字段中使用,因此您将需要不同地定义查询。 Either map the userid through a basic mapping in BarrageDetail so you can directly use the foreign key field, or try something along the lines of 您可以通过BarrageDetail中的基本映射来映射用户ID,以便您可以直接使用外键字段,也可以尝试以下方法:

"where eu= bd.eimsuser"

or 要么

"where eu.usercode = bd.eimsuser.usercode"

To be JPA compliant, you might also specify what you are selecting in the query. 为了符合JPA,您还可以指定查询中要选择的内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM