Java 抽象实体持久化器方法获取属性值类中存在非法参数异常 我在DAO类对象[]属性值变量getPropertyValues方法(Object对象,EntityMode.Pojo)上遇到错误;这是基于属性名称访问属性值的正确方法吗?请告诉我哪里出错了 使用Hibernate core 3.6.1 Final.jar

Java 抽象实体持久化器方法获取属性值类中存在非法参数异常 我在DAO类对象[]属性值变量getPropertyValues方法(Object对象,EntityMode.Pojo)上遇到错误;这是基于属性名称访问属性值的正确方法吗?请告诉我哪里出错了 使用Hibernate core 3.6.1 Final.jar,java,hibernate,Java,Hibernate,我的完整堆栈跟踪: [ERROR] IllegalArgumentException in class: com.zpmc.ecs.domain.ExportReport, getter method of property: description - (BasicPropertyAccessor.java:194) org.hibernate.PropertyAccessException: IllegalArgumentException occurred callin

我的完整堆栈跟踪:

  [ERROR] IllegalArgumentException in class: com.zpmc.ecs.domain.ExportReport, getter method of property: description       -  (BasicPropertyAccessor.java:194) 
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.zpmc.ecs.domain.ExportReport.description
    at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:198)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValues(AbstractEntityTuplizer.java:482)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValues(PojoEntityTuplizer.java:241)
    at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValues(AbstractEntityPersister.java:3857)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.getAllTables(AutoExportListenerService.java:327)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.buildReport(AutoExportListenerService.java:154)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.getAutoExportExcel(AutoExportListenerService.java:130)
    at com.zpmc.ecs.autoexportbean.MyTask.run(AutoExportListenerBean.java:137)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
    ... 9 more
    @Entity
@Table(name ="T_KPI_AUTO_EXPORT_CONFIG")
public class ExportReport implements Serializable  {
private String description;
@Column(name ="Description", nullable = false)
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}
public List <String> getAllTables() throws SQLException {
 Map<String, ClassMetadata> classMetaDataMap = hibernateTemplate.getSessionFactory().getAllClassMetadata();
         for(Map.Entry<String, ClassMetadata> metaDataMap : classMetaDataMap.entrySet()) {
ClassMetadata classMetadata = metaDataMap.getValue();
                AbstractEntityPersister abstractEntityPersister = (AbstractEntityPersister) classMetadata;
                tableName = abstractEntityPersister.getTableName();
String[] propertyNames = abstractEntityPersister.getPropertyNames();
  for(int i=0;i<propertyNames.length;i++){

                    Object[] propertyvalue =abstractEntityPersister.getPropertyValues(ExportReport.class,EntityMode.POJO);


                    System.out.println(propertyType+"Columns: " + propertyNames+"ddddd"+propertyvalue);
                      System.out.println(propertyNames[i]);
                      System.out.println(propertyvalue[i]);
                  }

}
}
Pojo类:

  [ERROR] IllegalArgumentException in class: com.zpmc.ecs.domain.ExportReport, getter method of property: description       -  (BasicPropertyAccessor.java:194) 
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.zpmc.ecs.domain.ExportReport.description
    at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:198)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValues(AbstractEntityTuplizer.java:482)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValues(PojoEntityTuplizer.java:241)
    at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValues(AbstractEntityPersister.java:3857)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.getAllTables(AutoExportListenerService.java:327)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.buildReport(AutoExportListenerService.java:154)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.getAutoExportExcel(AutoExportListenerService.java:130)
    at com.zpmc.ecs.autoexportbean.MyTask.run(AutoExportListenerBean.java:137)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
    ... 9 more
    @Entity
@Table(name ="T_KPI_AUTO_EXPORT_CONFIG")
public class ExportReport implements Serializable  {
private String description;
@Column(name ="Description", nullable = false)
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}
public List <String> getAllTables() throws SQLException {
 Map<String, ClassMetadata> classMetaDataMap = hibernateTemplate.getSessionFactory().getAllClassMetadata();
         for(Map.Entry<String, ClassMetadata> metaDataMap : classMetaDataMap.entrySet()) {
ClassMetadata classMetadata = metaDataMap.getValue();
                AbstractEntityPersister abstractEntityPersister = (AbstractEntityPersister) classMetadata;
                tableName = abstractEntityPersister.getTableName();
String[] propertyNames = abstractEntityPersister.getPropertyNames();
  for(int i=0;i<propertyNames.length;i++){

                    Object[] propertyvalue =abstractEntityPersister.getPropertyValues(ExportReport.class,EntityMode.POJO);


                    System.out.println(propertyType+"Columns: " + propertyNames+"ddddd"+propertyvalue);
                      System.out.println(propertyNames[i]);
                      System.out.println(propertyvalue[i]);
                  }

}
}
DAO类方法:

  [ERROR] IllegalArgumentException in class: com.zpmc.ecs.domain.ExportReport, getter method of property: description       -  (BasicPropertyAccessor.java:194) 
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.zpmc.ecs.domain.ExportReport.description
    at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:198)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValues(AbstractEntityTuplizer.java:482)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValues(PojoEntityTuplizer.java:241)
    at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValues(AbstractEntityPersister.java:3857)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.getAllTables(AutoExportListenerService.java:327)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.buildReport(AutoExportListenerService.java:154)
    at com.zpmc.ecs.autoexportbean.AutoExportListenerService.getAutoExportExcel(AutoExportListenerService.java:130)
    at com.zpmc.ecs.autoexportbean.MyTask.run(AutoExportListenerBean.java:137)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
    ... 9 more
    @Entity
@Table(name ="T_KPI_AUTO_EXPORT_CONFIG")
public class ExportReport implements Serializable  {
private String description;
@Column(name ="Description", nullable = false)
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}
public List <String> getAllTables() throws SQLException {
 Map<String, ClassMetadata> classMetaDataMap = hibernateTemplate.getSessionFactory().getAllClassMetadata();
         for(Map.Entry<String, ClassMetadata> metaDataMap : classMetaDataMap.entrySet()) {
ClassMetadata classMetadata = metaDataMap.getValue();
                AbstractEntityPersister abstractEntityPersister = (AbstractEntityPersister) classMetadata;
                tableName = abstractEntityPersister.getTableName();
String[] propertyNames = abstractEntityPersister.getPropertyNames();
  for(int i=0;i<propertyNames.length;i++){

                    Object[] propertyvalue =abstractEntityPersister.getPropertyValues(ExportReport.class,EntityMode.POJO);


                    System.out.println(propertyType+"Columns: " + propertyNames+"ddddd"+propertyvalue);
                      System.out.println(propertyNames[i]);
                      System.out.println(propertyvalue[i]);
                  }

}
}
public List getAllTables()引发SQLException{
Map classMetaDataMap=hibernateTemplate.getSessionFactory().getAllClassMetadata();
对于(Map.Entry metaDataMap:classMetaDataMap.entrySet()){
ClassMetadata ClassMetadata=metaDataMap.getValue();
AbstractEntityPersister AbstractEntityPersister=(AbstractEntityTypersister)类元数据;
tableName=abstractEntityPersister.getTableName();
字符串[]propertyNames=abstractEntityPersister.getPropertyNames();

对于(int i=0;i可能重复感谢您回复我,实际上我想使用hibernate从数据库中获取数据?我没有获得结果,请告诉我任何其他方法?您想如何获取数据,从哪个表中获取数据,在查询中需要什么道具?使用哪个数据库?我使用oracle数据库,我需要获取所有数据库表的数据。E例如:就像使用jdbc模板一样,但是我使用hibernate模板的要求让我知道这可能吗?上面的代码我使用getAllClassMetada获取所有表。为什么要一次获取数据库中的所有表?有什么特殊原因吗?建议在需要时获取数据。因为使用hibernate,所以可以获取所有子表当您使用
FetchType.Eager
请求父级时,我建议您使用
hibernateTemplate.find(sqlQuery);
从数据库获取表。