关于hibernate的JDBC的查询方式问题

haifei123 2007-12-11 10:55:25
现在是我用到hibernat一般是这样的查询的
Query query = session.createQuery("from User(类名)");

但是如果这条SQL语句比较复杂 我如何在Hibernate里运用JDBC方式的查询
...全文
239 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeti20011 2007-12-13
  • 打赏
  • 举报
回复
获得connection用session获得就可以了 其他的和jdbc一样
yztommyhc 2007-12-12
  • 打赏
  • 举报
回复
session.createQuery("from User(类名) where ...");
这里可以构造复杂查询的。
oracs 2007-12-12
  • 打赏
  • 举报
回复
其实是一样的,你在方法里不用hibernate session, transaction,
而用Jdbc的类库去查询。
还有,就像ls说的,query也支持复杂查询的。
haifei123 2007-12-12
  • 打赏
  • 举报
回复
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="connection.username">SCOTT</property>
<property name="connection.password">java</property>
<property name="connection.url">
jdbc:oracle:thin:@127.0.0.1:1521:ORCL
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">
oracleDatabase
</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<mapping resource="com/vo/Haifei.hbm.xml" />

</session-factory>

</hibernate-configuration>

这个是hibernate的配置文件
haifei123 2007-12-12
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.vo.Haifei" table="HAIFEI" >
<id name="idd" column="idd">
<generator class="increment"></generator>
</id>
<property name="username" column="name"></property>
</class>
</hibernate-mapping>

这是我的vo映射 你说的<sql-query name="sql"> 应该添加到什么位置
baobeituping 2007-12-12
  • 打赏
  • 举报
回复
在hibernate中有一个SQLQuery的类
使用方法
String sql = "select {s.*} from User s where s.id=32768";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("s", User.class);
List<User> user = query.list();
for(User s : user)
{
System.out.println(s.getName());
}
注意点是查询的时候{s.*} 要用{}括起来,然后指出你的实体名字query.addEntity("s", User.class);

这样就可以在HIBERNATE中引用SQL语句了
shiyang2722 2007-12-11
  • 打赏
  • 举报
回复
可以在实体映射文件中定义<sql-query name="sql">你要写的SQL</sql-query>
然后再程序中用 Query query = session.getNameQuery("sql");调用就行了

67,549

社区成员

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

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