hibernate查询数据库时采用sql查询得出的结果没有对象名称,该怎么解决呢

hibernate查询数据库时采用sql查询得出的结果没有对象名称,该怎么解决呢,第1张

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 实体类 中的主键、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9465523.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存