首页 > 解决方案 > java.lang.IndexOutOfBoundsException:记住序数参数是从 1 开始的

问题描述

public void testis() {
        Staff2 emp = new Staff2();
      emp.setName("SFFF");
      emp.setType("yyy");
      emp.setDme(123);
      emp.setIsActive("FFF");
   ssiMasterValidationSearchCriteriaDaoImpl.save(emp);

    }

private final static String SAVE_TO_DB="Insert into table1 (name,type,code,mne) values ('?','?','?','?')";


    public void save(Staff2 employee){
        Object result = getHibernateTemplateExt().uniqueResultBySQL(
                SAVE_TO_DB,
                new Object[] {
                    employee.getName(),
                    employee.getType(),
                    employee.getDme(),
                    employee.getIsActive()});

    }

得到标题错误是

java.lang.IndexOutOfBoundsException:记住序数参数是从 1 开始的!在 org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:55) 在 org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterExpectedType(ParameterMetadata.java:61) 在 org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl .java:397)

标签: hibernate

解决方案


更改private final static String SAVE_TO_DB="Insert into table1 (name,type,code,mne) values ('?','?','?','?')";private final static String SAVE_TO_DB="Insert into table1 (name,type,code,mne) values ('?1','?2','?3','?4')";检查。

另外我怀疑您的查询Insert into table1 (name,type,code,mne) values ('?','?','?','?')包含与这些设置器不同的字段

  emp.setName("SFFF");
  emp.setType("yyy");
  emp.setDme(123);
  emp.setIsActive("FFF");

例如setDme字段名称应该是dme,但在查询中它是mne


推荐阅读