关于hibernate的JDBC的查询方式问题 可以在实体映射文件中定义<sql-query name="sql">你要写的SQL</sql-query>然后再程序中用 Query query = session.getNameQuery("sql");调用就行了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?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"> 应该添加到什么位置 <?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的配置文件 session.createQuery("from User(类名) where ..."); 这里可以构造复杂查询的。 在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语句了 其实是一样的,你在方法里不用hibernate session, transaction,而用Jdbc的类库去查询。还有,就像ls说的,query也支持复杂查询的。 获得connection用session获得就可以了 其他的和jdbc一样 ssh+dwr rmi安全问题 mysql怎么收回远程连接权限 精通EJB的helloworld例子,出现以下错误 AXIS1.4 输出request xml 问一个简单的问题 java和EXE JBuilderX运行Struts出错!!! 一个关于数据库连接池的问题(欢迎进来讨论)? j2ee API Document 有下载版的吗? 华大基因的待遇 Tomcat5.5下和虚拟主机下的“/”的效果不同,麻烦对tomcat了解的朋友帮帮我
<!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"> 应该添加到什么位置
<!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的配置文件
这里可以构造复杂查询的。
使用方法
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语句了
而用Jdbc的类库去查询。
还有,就像ls说的,query也支持复杂查询的。