我正在尝试使用DetachedCriteria从SQl服务器DB中检索数据库详细信息,如下所示。 nvarcharID是String Type
List<POJO> pojoObj = (List<POJO>) getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(
POJO.class).add(Restrictions.idEq(nvarcharID)));
在我的POJO中,我有以下属性
@Id
@GeneratedValue
@Column(name = "ID")
private double ID;
@Nationalized
@Column(name = "Column1")
private String string1;
@Nationalized
@Column(name = "column2")
private String string2;
column1和column2都是在sql serverDB中的nvarchar类型。 Criteria中使用的nvarcharID和DB中的另一个字段在DB中的类型为nvarchar,我将其映射为String。在填充POJO时,我不希望navarcharID字段成为我的POJO的一部分。
对于hibernate,我在gradle文件中有以下依赖项
compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.3.11.Final'
compile group: 'javax.validation', name: 'validation-api', version: '1.0.0.GA'
compile group: 'org.hibernate', name: 'hibernate-validator-annotation-processor', version: '4.3.2.Final'
compile group: 'org.hibernate', name: 'hibernate-validator', version: '4.3.2.Final'
compile 'org.hibernate:hibernate-core:4.3.11.Final'
我的Spring依赖项是
compile group: 'org.springframework', name: 'spring-orm', version:'4.1.6.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version: '4.1.6.RELEASE'
compile group: 'org.springframework.security', name: 'spring-security-web', version: '4.0.2.RELEASE'
我还在Hibernate配置文件中为Dialect和ddl操作设置了以下属性。
@Bean
public LocalSessionFactoryBean sessionFactoryBean() {
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource(dataSource);
localSessionFactoryBean.setPackagesToScan(new String[] { "com.wk.cdi" });
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.SQLServer2012Dialect");
properties.setProperty("hibernate.use_nationalized_character_data", "true");
properties.setProperty("hibernate.hbm2ddl.auto", "update");
properties.setProperty("hibernate.format_sql", "true");
properties.setProperty("hibernate.show_sql", "true");
localSessionFactoryBean.setHibernateProperties(properties);
return localSessionFactoryBean;
}
当我尝试使用hibernateTemplate来检索我得到的数据时 java.lang.ClassCastException:java.lang.String无法强制转换为java.lang.Double,并且在使用上面的DetachedCriteria时抛出错误
答案 0 :(得分:0)
因为还有别的东西,所以请忽略这一点。 碰巧是Restrcition.idEq需要被Restrictions.eq
替换