簡體   English   中英

org.hibernate.exception.GenericJDBCException:無法提取ResultSet

[英]org.hibernate.exception.GenericJDBCException: could not extract ResultSet

嗨,您能幫我解決這個問題嗎? 我在MySQL DB中連接了此應用程序,每次運行此作業以從DB中獲取數據時,我總是會收到此異常,請參閱添加了java類,DAO和方法以及Apache DBCP2配置的完整堆棧跟蹤。

POJO class

@Entity
public class ILCShiftEntries implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column
    private int month;

    @Column
    private int year;

    @Column
    private int date;

    @Column
    private String groupId;

    @Column
    private String countryCode;


    @Column
    private String employeeSerialNumber;

    @Column
    private String employeeLastName;

    @Column
    private String employeeDeptNumber;

    @Column
    private String accountId;

    @Column
    private String workItemId;

    @Column
    private String workItemDesc;

    @Column
    private String activityCode;

    @Column
    private String activityDesc;

    @Column 
    private String billingCode;

    @Column
    private String weekEndingDate;

    @Column
    private String overtimeInd;

    @Column
    private String satHoursExpended;

    @Column
    private String sunHoursExpended;

    @Column
    private String monHoursExpended;

    @Column
    private String tuesdayHoursExpended;

    @Column
    private String wedHoursExpended;

    @Column
    private String thuHoursExpended;

    @Column
    private String friHoursExpended;


    @Column
    private String totalHoursExpended;

    @Column
    private String createdTimeStamp;

    @Column
    private String sumiterSerialNumber;

    @Column
    private String lbrRptInd;

    @Column
    private String employeeEffectiveDate;

    @Column
    private String labStatus;

    @Transient
    private String serialNumber;

    @Transient
    private String workDayManager;

    @Transient
    private String workDayManagerSerialNumber;

    @Column
    private String sourceApplicationId;

    @Column
    private String siteLocation;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }

    public String getGroupId() {
        return groupId;
    }

    public void setGroupId(String groupId) {
        this.groupId = groupId;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getEmployeeSerialNumber() {
        return employeeSerialNumber;
    }

    public void setEmployeeSerialNumber(String employeeSerialNumber) {
        this.employeeSerialNumber = employeeSerialNumber;
    }

    public String getEmployeeLastName() {
        return employeeLastName;
    }

    public void setEmployeeLastName(String employeeLastName) {
        this.employeeLastName = employeeLastName;
    }

    public String getEmployeeDeptNumber() {
        return employeeDeptNumber;
    }

    public void setEmployeeDeptNumber(String employeeDeptNumber) {
        this.employeeDeptNumber = employeeDeptNumber;
    }

    public String getAccountId() {
        return accountId;
    }

    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    public String getWorkItemId() {
        return workItemId;
    }

    public void setWorkItemId(String workItemId) {
        this.workItemId = workItemId;
    }

    public String getWorkItemDesc() {
        return workItemDesc;
    }

    public void setWorkItemDesc(String workItemDesc) {
        this.workItemDesc = workItemDesc;
    }

    public String getActivityCode() {
        return activityCode;
    }

    public void setActivityCode(String activityCode) {
        this.activityCode = activityCode;
    }

    public String getActivityDesc() {
        return activityDesc;
    }

    public void setActivityDesc(String activityDesc) {
        this.activityDesc = activityDesc;
    }

    public String getBillingCode() {
        return billingCode;
    }

    public void setBillingCode(String billingCode) {
        this.billingCode = billingCode;
    }

    public String getWeekEndingDate() {
        return weekEndingDate;
    }

    public void setWeekEndingDate(String weekEndingDate) {
        this.weekEndingDate = weekEndingDate;
    }

    public String getOvertimeInd() {
        return overtimeInd;
    }

    public void setOvertimeInd(String overtimeInd) {
        this.overtimeInd = overtimeInd;
    }

    public String getSatHoursExpended() {
        if( NumberUtil.toDouble( satHoursExpended ) > 0 ){
            return satHoursExpended;
        }
        return "0";
    }

    public void setSatHoursExpended(String satHoursExpended) {
        this.satHoursExpended = satHoursExpended;
    }

    public String getSunHoursExpended() {
        if( NumberUtil.toDouble( sunHoursExpended ) > 0 ){
            return sunHoursExpended;
        }
        return "0";
    }

    public void setSunHoursExpended(String sunHoursExpended) {
        this.sunHoursExpended = sunHoursExpended;
    }

    public String getMonHoursExpended() {
        if( NumberUtil.toDouble( monHoursExpended ) > 0 ){
            return monHoursExpended;
        }
        return "0";
    }

    public void setMonHoursExpended(String monHoursExpended) {
        this.monHoursExpended = monHoursExpended;
    }

    public String getTuesdayHoursExpended() {
        if( NumberUtil.toDouble( tuesdayHoursExpended ) > 0 ){
            return tuesdayHoursExpended;
        }
        return "0";
    }

    public void setTuesdayHoursExpended(String tuesdayHoursExpended) {
        this.tuesdayHoursExpended = tuesdayHoursExpended;
    }

    public String getWedHoursExpended() {
        if( NumberUtil.toDouble( wedHoursExpended ) > 0 ){
            return wedHoursExpended;
        }
        return "0";
    }

    public void setWedHoursExpended(String wedHoursExpended) {
        this.wedHoursExpended = wedHoursExpended;
    }

    public String getThuHoursExpended() {
        if( NumberUtil.toDouble( thuHoursExpended ) > 0 ){
            return thuHoursExpended;
        }
        return "0";
    }

    public void setThuHoursExpended(String thuHoursExpended) {
        this.thuHoursExpended = thuHoursExpended;
    }

    public String getFriHoursExpended() {
        if( NumberUtil.toDouble( friHoursExpended ) > 0 ){
            return friHoursExpended;
        }
        return "0";
    }

    public void setFriHoursExpended(String friHoursExpended) {
        this.friHoursExpended = friHoursExpended;
    }

    public String getTotalHoursExpended() {
        return totalHoursExpended;
    }

    public void setTotalHoursExpended(String totalHoursExpended) {
        this.totalHoursExpended = totalHoursExpended;
    }

    public String getCreatedTimeStamp() {
        return createdTimeStamp;
    }

    public void setCreatedTimeStamp(String createdTimeStamp) {
        this.createdTimeStamp = createdTimeStamp;
    }

    public String getSumiterSerialNumber() {
        return sumiterSerialNumber;
    }

    public void setSumiterSerialNumber(String sumiterSerialNumber) {
        this.sumiterSerialNumber = sumiterSerialNumber;
    }

    public String getLbrRptInd() {
        return lbrRptInd;
    }

    public void setLbrRptInd(String lbrRptInd) {
        this.lbrRptInd = lbrRptInd;
    }

    public String getEmployeeEffectiveDate() {
        return employeeEffectiveDate;
    }

    public void setEmployeeEffectiveDate(String employeeEffectiveDate) {
        this.employeeEffectiveDate = employeeEffectiveDate;
    }

    public String getLabStatus() {
        return labStatus;
    }

    public void setLabStatus(String labStatus) {
        this.labStatus = labStatus;
    }

    public String getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(String serialNumber) {
        this.serialNumber = serialNumber;
    }

    public String getWorkDayManager() {
        return workDayManager;
    }

    public void setWorkDayManager(String workDayManager) {
        this.workDayManager = workDayManager;
    }

    public String getWorkDayManagerSerialNumber() {
        return workDayManagerSerialNumber;
    }

    public void setWorkDayManagerSerialNumber(String workDayManagerSerialNumber) {
        this.workDayManagerSerialNumber = workDayManagerSerialNumber;
    }

    public String getSourceApplicationId() {
        return sourceApplicationId;
    }

    public void setSourceApplicationId(String sourceApplicationId) {
        this.sourceApplicationId = sourceApplicationId;
    }

    public String getSiteLocation() {
        return siteLocation;
    }

    public void setSiteLocation(String siteLocation) {
        this.siteLocation = siteLocation;
    }
}


Dao Class


public class ILCShiftEntriesDaoImpl implements ILCShiftEntriesDao{



    @Override
    public List< ILCShiftEntries > getListOfILCShiftEntriesWithLimitAndOffSet( StatelessSession statelessSession, int limitNumber, int offsetNumber ) {
        List<ILCShiftEntries > listOfILCShiftEntries = null;
        Query query = statelessSession.createQuery("from ILCShiftEntries order by id desc");
        query.setFirstResult( offsetNumber );
        query.setMaxResults( limitNumber );
        List list = query.getResultList();
        if( Utilities.isListNotEmpty( list ) ){
             listOfILCShiftEntries = ( List<ILCShiftEntries > )list;
        }
        return listOfILCShiftEntries;
    }

}

apache DBCP2 config


    database.dbcp.maxTotal=-1
    database.dbcp.maxIdle=8
    database.dbcp.minIdle=0
    database.dbcp.initialSize=20
    database.dbcp.maxWaitMillis=23904
    database.dbcp.testWhileIdle=true
    database.dbcp.maxOpenPreparedStatements=-1
    database.dbcp.validationQuery=SELECT 1
    database.dbcp.softMinEvictableIdleTimeMillis=300000
    database.dbcp.timeBetweenEvictionRunsMillis=300000

23:35:46.799 [DefaultQuartzScheduler_Worker-1]錯誤org.hibernate.engine.jdbc.spi.SqlExceptionHelper-無法從服務器讀取響應。 預期讀取183個字節,讀取75個字節,然后連接意外丟失。 javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:無法在org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)處提取ResultSet: 157)位於orgs.ILCShiftEntriesDaoImpl.getListOfILCShiftEntriesWithLimitAndOffSet(ILCShiftEntriesDaoImpl。 )在工作上.VarianceReportJobs.doILCWorkdayDBSync(VarianceReportJobs.java:400)在org.quartz.core.JobRunShell.run(JobRunShell.java:202)的job.VarianceReportJobs.execute(VarianceReportJobs.java:205)在org.quartz.simpl .SimpleThreadPool $ WorkerThread.run(SimpleThreadPool.java:573)原因:org.hibernate.exception.GenericJDBCException:無法在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLE處提取ResultSet) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)處的xceptionConverter.java:47)在org.org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)處.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:69)在org.hibernate.loader.Loader.getResultSet(Loader.java:2168)在org.hibernate.loader.Loader.executeQueryStatement(Loader.java :1931)位於org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1893)位於org.hibernate.loader.Loader.doQuery(Loader.java:938)位於org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader。 org.hibernate.loader.Loader.doList(Loader.java:2692)的org.hibernate.loader.Loader.doList(Loader.java:2675)的org.hibernate.loader.Loader.listIgnoreQueryCache(Loader的java:341) org.hibernate.loader.Loader.list(Loader.java:2502)的org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502)的org.hibernate.hql.internal的.java:2507)。 ast.QueryTranslatorIm org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)的org.hibernate.internal.StatelessSessionImpl.list(StatelessSessionImpl.java:464)的pl.list(QueryTranslatorImpl.java:392) org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414)處的.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445)... 6更多原因:java.sql.SQLException:無法讀取來自服務器的響應。 預期讀取183個字節,讀取75個字節,然后連接意外丟失。 在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)在com.mysql.cj.jdbc com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)中的.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)在com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1024 )在org.hibernate.engine.jdb上的org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122)上的org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122) ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)...還有21個javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:無法在org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)處提取ResultSet在org.hibernate.internal.E org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1423)的xceptionConverterImpl.convert(ExceptionConverterImpl.java:157)在daos.ILCShiftEntriesDaoImpl的org.hibernate.query.Query.getResultList(Query.java:146) .getListOfILCShiftEntriesWithLimitAndOffSet(ILCShiftEntriesDaoImpl.java:275)在作業.VarianceReportJobs.doILCWorkdayDBSync(VarianceReportJobs.java:400)在作業.VarianceReportJobs.execute(VarianceReportJobs.java:205)在org.quarshellrun.core.run。 202)at org.quartz.simpl.SimpleThreadPool $ WorkerThread.run(SimpleThreadPool.java:573)由以下原因造成:org.hibernate.exception.GenericJDBCException:無法在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter .java:47),位於org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97),位於org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)。 hibernate.engine.jdb c.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:69)在org.hibernate.loader.Loader.getResultSet(Loader.java:2168)在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1931)在org位於org.hibernate.loader.Loader.doQuery(Loader.java:938)的.hibernate.loader.Loader.executeQueryStatement(Loader.java:1893)位於org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2692)位於org.hibernate.loader.Loader.doList(Loader.java:2675)at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2507)在org.hibernate.loader.Loader.list(Loader.java:2502)在org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502)在org.hibernate.hql.internal.ast.QueryTranslatorImpl.list (QueryTranslatorImpl.java:392)在org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)在org.hibernate.internal.StatelessSessionImpl.list(StatelessSessionImpl.java:464)在org.hibernate。 query.inter org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414)的nal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445)... 6個其他原因:java.sql.SQLException:無法讀取以下響應:服務器。 預期讀取183個字節,讀取75個字節,然后連接意外丟失。 在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)在com.mysql.cj.jdbc com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)中的.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)在com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1024 )在org.hibernate.engine.jdb上的org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122)上的org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122) ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)...還有21個

我在java.sql.SQLException中遇到了相同的錯誤:表太多; MySQL在一個聯接中只能使用61個表

發生這種情況是因為關聯了太多的表。如果不使用提取類型,則可能是由於關聯而發生的。

例如-在我的情況下,我有150多個表Book_Selling,Refund等。在這種情況下,我創建了一個表來連接所有與付款有關的表。如果我從付款表中獲取數據,則它會連接所有其他表及其相關表,因此所有這些表的數量超過61個表。 在mysql默認情況下,您一次只能使用61個表創建聯接查詢

使用fetch type作為lazy可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM