急!!!Spring+hibernate连接ORACLE,有查询SQL,但是没有结果?

szasgmg 2006-08-21 10:09:52
在TOMCAT5.5下,用STRUCT+SPRING+HIBERNATE开发,连接数据库发现问题,配置文件如下:
applicationContext.xml
<beans>
<bean id="ttDataSource" class="org.apache.commons.dbcp.BasicDataSource">
。。。。。
</bean>
<bean id="ttSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="ttDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
<prop key="hibernate.max_fetch_depth">2</prop>
<prop key="hibernate.default_batch_fetch_size">8</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>Username.hbm.xml</value>
</list>
</property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="ttTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="ttSessionFactory" />
</property>
</bean>

<bean id="UsernameDAO" class="UsernameDAO">
<property name="sessionFactory">
<ref bean="ttSessionFactory" />
</property>
</bean>

<bean id="userrightTarget" class="UserrightService">
<property name="usernameDAO">
<ref local="UsernameDAO"></ref>
</property>
</bean>

<bean id="userrightService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="ttTransactionManager"></ref>
</property>
<property name="target">
<ref local="userrightTarget"></ref>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
Username.hbm.xml:
....
<class name="Username" table="USERNAME" schema="tt" >
<id name="username" type="string">
<column name="USERNAME" length="8" />
<generator class="assigned"></generator>
</id>
<property name="longname" type="string">
<column name="LONGNAME" length="60" />
</property>
....
UsernameDAO.java:
....
public Username findById( java.lang.String id) {
log.debug("getting Username instance with id: " + id);
Username instance=new Username();
try {
HibernateTemplate template=this.getHibernateTemplate();
// HibernateTemplate template=this.getHibernateTemplate();
// Connection con=template.getSessionFactory().getCurrentSession().connection();
// PreparedStatement pst=con.prepareStatement("select * from username where username='123'");
// ResultSet rst=pst.executeQuery();
// while(rst.next()){
// System.out.println(rst.getString("username"));
// //System.out.println(rst.getString("functionname"));
// }
List l =(List)template.find("from Username user where user.username=?",id);

System.out.println(l.size());
instance.getDepartment();
System.out.println(instance.getUserid());

} catch (Exception re) {
log.error("get failed", re);
//throw re;
}
return instance;
}
....
跟踪测试:如果取消注释部分,可以得到查询结果,但如果注释了,执行template.find("from Username user where user.username=?",id);可以看到控制台显示了HQL-》SQL语句,但是没有查询结果,将该SQL直接到数据库查询,可以有结果。请问是什么原因?急!!!!

...全文
440 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Marcus-Z 2006-10-19
  • 打赏
  • 举报
回复
楼主写死看看
List l =(List)template.find("from Username user where user.username='123'",id);
另外不需要强制转换了
List l =template.find("from Username user where user.username='123'",id);
water2004 2006-10-19
  • 打赏
  • 举报
回复
MARK
BabyFish_CT 2006-10-18
  • 打赏
  • 举报
回复
个人作品,欢迎下载

Hibernate固强,然用之稍烦.近常思于此而略有心得,故作此小东东以简化之.限予之技而难逃龌龊之举,望各大虾批评指正

此套件虽然小,但是可以帮助你在实际项目中提高Hibernate的使用速度
下载地址为<a href="http://www.cd-accp.net/web/hbdao.rar">http://www.cd-accp.net/web/hbdao.rar</a>

此套件主要用于帮助开发人员在Hibernate环境下开发数据访问层
为了使用此套件,你必须具备JDK1.5(或更高),并且设置你的编译器以支持5.0代码语法
此套件提供以下功能

1.多Hibernate配置文件的支持
2.可嵌套虚拟事务模型的支持
3.事务边界拓展功能的支持
4.事务隔离级别拓展功能的支持
5.数据访问类事务处理自动注入的支持

愿我的工作能减轻你的负担, 有问题可以反馈至BabyFish-CT@163.com, 祝使用愉快!
(接下来的时间里,我将仔细研究.NET的System.Reflect.Emit名字空间以推出NHibernate版本)

CSP提示
自本年2月开始,本人开始利用非常宝贵的下班后的休息时间, 开发一套Java Web框架(CSP);目前取得阶段性成果, 不久的将来便可和大家碰面

这套Java Web架构提供如下功能

1.服务端的非常像ASP.NET,提供基于视图控件的属性/事件编程模型
2.服务端效防ASP.NET的__VIEWSTATE技术,实现页面的有状态化
3.服务端效防ASP.NET1.1中的模板和数据绑顶功能,以及ASP.NET2.0中的母板功能
4.服务端前台代码使用严格遵循Schema验证的XML书写,Schema验证结构可扩展.支持解析结果的缓冲和热加载功能
5.客户端完全使用Ajax技术实现,所有的UI元素由Javascript动态生成
6.客户端支持__VIEWSTATE隐藏字段信息的拆分和合并,在局部提交的情况下仍然配合全程的服务端工作
7.客户端支持JavaScript文件的按需延迟下载,以达到下载的最小化

如果不出意外.不久后此框架会发行面世,届时望四方朋友捧场



如果有问题可以反馈到我的信箱BabyFish-CT@163.com, 谢谢你对本文挡的阅读
陈涛,2006-10-17日于北大青鸟(成都名流)
fokker 2006-10-18
  • 打赏
  • 举报
回复
我今天遇到了一个问题,就是Oracle的char类型字段,如果长度不够,Oracle会用空格补全,所以用Hibernate查询这个字段就查不出来(好像要把长度补够了才能查出来),但如果数据库是SqlServer就没问题。楼主看看是不是这个原因。
szasgmg 2006-08-23
  • 打赏
  • 举报
回复
Hibernate: /* load com.shenzhenair.medet.bo.users.Username */ select username0_.USERNAME as USERNAME0_, username0_.LONGNAME as LONGNAME19_0_, username0_.DEPARTMENT as DEPARTMENT19_0_, username0_.FUNCTIONNAMETYPE as FUNCTION4_19_0_, username0_.VERSIONNO as VERSIONNO19_0_, username0_.UPDATEDWHEN as UPDATEDW6_19_0_, username0_.UPDATEDBY as UPDATEDBY19_0_, username0_.USERID as USERID19_0_, username0_.PASSWORD as PASSWORD19_0_, username0_.USERMENU as USERMENU19_0_, username0_.VALID_IN_DB as VALID11_19_0_ from test.USERNAME username0_ where username0_.USERNAME=?
hugh0409 2006-08-23
  • 打赏
  • 举报
回复
控制台显示的SQL语句是什么?
szasgmg 2006-08-22
  • 打赏
  • 举报
回复
有谁知道不?SOS
szasgmg 2006-08-22
  • 打赏
  • 举报
回复
对,这个是没有值,但是System.out.println(l.size());输出为0,为什么?实际上有查询语句显示在控制台,就是没有结果
miaoliujun 2006-08-22
  • 打赏
  • 举报
回复
按照你的代码,System.out.println(instance.getUserid());
是永远写不出东西出来的
因为instance你除了初始化,都没有赋过值
szasgmg 2006-08-21
  • 打赏
  • 举报
回复
急呀,哪位高手可以帮忙呀!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧