可以在实体映射文件中定义<sql-query name="sql">你要写的SQL</sql-query>
然后再程序中用 Query query = session.getNameQuery("sql");调用就行了

解决方案 »

  1.   

    <?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">  应该添加到什么位置
      

  2.   

    <?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的配置文件
      

  3.   

    session.createQuery("from   User(类名) where ..."); 
    这里可以构造复杂查询的。
      

  4.   

    在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语句了
      

  5.   

    其实是一样的,你在方法里不用hibernate session, transaction,
    而用Jdbc的类库去查询。
    还有,就像ls说的,query也支持复杂查询的。
      

  6.   

    获得connection用session获得就可以了  其他的和jdbc一样