
1、查看自己写的语句,没有丝毫的错误。放到SQL查询分析器执行。也能检索出数据。
这确保了这条语句是没错的。
提示:Hibernate中的SQL语句是不区分大小写的,即便是你查询的表名。比如你写成这
样也是合法的
"SEleCt
fRoM
ClaSSes
"。那么Hibernate怎样 *** 作对象?问题的关键
是这里sQueryaddEntity(Classesclass);这条语句,
你要正确填写你要检索的表的
实体,它必须是你存在的POJO。
2、使用Hibernate官方推荐的HQL查询,同样的数据库,同样的表。结果是正确的。这
确保了数据库链接是绝对没有问题的。
3、仔细检查我写的SQL查询方法,没有发现什么语法错误。
4、检查我查询表的POJO对象的映射文件XXXhbmxml
,主键生成方式是
native
。似
乎也没有错误。
5、检查数据库检索表的主键,也已经设成自动增长。
package util;
import javautilIterator;
import orghibernatecfgConfiguration;
import orghibernatemappingColumn;
import orghibernatemappingPersistentClass;
import orghibernatemappingProperty;
import orgspringframeworkbeansBeansException;
import orgspringframeworkcontextApplicationContext;
import orgspringframeworkcontextApplicationContextAware;
import orgspringframeworkormhibernate4LocalSessionFactoryBean;
/
根据实体类得到对应的表名、主键名、字段名(与Spring集成)
这里使用xml文件配置的映射,需要保证实体类名与对应映射文件名一致,即Userjava与Userhbmxml
</p>
这里使用继承ApplicationContextAware的方式来获得ApplicationContext,
因此需要在Spring配置文件中配置一下该类,才能自动注入ApplicationContext对象
<bean class="utilHibernateConfigurationUtil"/>
/
public class HibernateConfigurationUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
private static Configuration configuration;
public static Configuration getConfiguration() {
if (configuration == null) {
// 取sessionFactory的时候要加上&
LocalSessionFactoryBean factory = (LocalSessionFactoryBean) applicationContext
getBean("&sessionFactory");
configuration = factorygetConfiguration();
}
return configuration;
}
private static <T> PersistentClass getPersistentClass(Class<T> clazz) {
synchronized (HibernateConfigurationUtilclass) {
PersistentClass pc = getConfiguration()getClassMapping(
clazzgetSimpleName());
if (pc == null) {
configuration = configurationaddClass(clazz);
pc = configurationgetClassMapping(clazzgetName());
}
return pc;
}
}
/
获得实体类对应的表名
@param clazz
实体类的Class对象
@return 表名
/
public static <T> String getTableName(Class<T> clazz) {
return getPersistentClass(clazz)getTable()getName();
}
/
获得实体类对应表的主键字段名称
@param clazz
实体类的Class对象
@return 主键字段名称
/
public static <T> String getPKColumnName(Class<T> clazz) {
return getPersistentClass(clazz)getTable()getPrimaryKey()
getColumn(0)getName();
}
/
获得类属性对应的字段名
@param clazz
实体类的Class对象
@param propertyName
实体类的属性名
@return 属性对应的字段名
/
public static <T> String getColumnName(Class<T> clazz, String propertyName) {
String columnName = "";
PersistentClass persistentClass = getPersistentClass(clazz);
Property property = persistentClassgetProperty(propertyName);
Iterator<> iterator = propertygetColumnIterator();
if (iteratorhasNext()) {
Column column = (Column) iteratornext();
columnName += columngetName();
}
return columnName;
}
@Override
public void setApplicationContext(ApplicationContext context)
throws BeansException {
applicationContext = context;
}
}
以上就是关于hibernate查询数据库时采用sql查询得出的结果没有对象名称,该怎么解决呢全部的内容,包括:hibernate查询数据库时采用sql查询得出的结果没有对象名称,该怎么解决呢、如何获取hibernate 实体类 中的主键、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)