2013-05-06 3 views
0

데이터베이스에서 값을 가져 오는 쿼리를 작성했으며 jsf 페이지의 DataGrid에 표시됩니다. 그러나 나는 daoimpl 층에서 예외적으로 제기된다. 배열을 문자열로 StringBuffer를 변환하고 가져 오는 동안 내가 실수를 발견 errors.Please 레이즈 내가데이터베이스에서 값을 선택할 때 예외가 발생했습니다.

DaoImpl.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

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

했다있다
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; 
    } 

} 
+0

'Barragedetail'에는 주석이 달린'userid'라는 필드가 있습니까? –

+0

BarrageDetail에 사용자 ID 속성이 있습니까? – mcalex

+0

Barragedetail.java에 userid 속성이 있습니다. –

답변

1

BarrageDetail에 userid라는 속성이 없지만 대신 userid 데이터베이스 필드를 사용하는 eimsuser가 있습니다. JPA는 데이터베이스 필드가 아닌 쿼리에서 엔터티 특성을 사용하므로 쿼리를 다르게 정의해야합니다. 직접 외래 키 필드를 사용하거나 JPA 준수하려면

"where eu= bd.eimsuser" 

또는

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

의 라인을 따라 뭔가를 시도 할 수 있도록 어느 쪽이든 당신은 또한 수도, BarrageDetail의 기본 매핑을 통해 사용자 ID를 매핑 쿼리에서 선택할 항목을 지정하십시오.

+0

감사합니다. –

2

바라쥐 tail 클래스는 userid 필드가 올바르게 매핑되지 않았을 수 있습니다.

수업을 보지 않고도 확인하는 것이 어려울 수 있습니다.

+0

대담을 추가했습니다. 세부 등급 –

+0

사용자 ID 대신 eimsuser로 필드를 참조해야한다고 생각합니다. 매핑을 수행하기 위해 XML 파일을 사용하지 않는 한, 테이블의 열 이름이 아닌 클래스의 변수 이름을 사용한다고 생각합니다. – JayDM

관련 문제