hql查询不返回唯一结果

时间:2013-11-15 11:38:53

标签: hibernate

hibernate.cfg.xml中

<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/GuestBook</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">usman</property>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
  <property name="hbm2ddl.auto">update</property>
  <property name="show_sql">true</property>

hbm.xml

<hibernate-mapping>
<class name="it.rpf.pojo.GuestBook" table="Guestbook" >
    <id name="visitorNo" type="java.lang.Integer">
        <column name="visitorNo" />
        <generator class="identity" />
    </id>
    <property name="visitorName" type="string">
        <column name="visitorName" length="50" />
    </property>
    <property name="message" type="string">
        <column name="message" length="100" />
    </property>
    <property name="messageDate" type="string">
        <column name="messageDate" length="40" />
    </property>
</class>

test.class

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    Session session = null;
    try {
        SessionFactory factory = new Configuration().configure().buildSessionFactory();
        session = factory.openSession();

        System.out.println(" session established ");

         List<GuestBook> list = session.createQuery( "from GuestBook" ).list();
         System.out.println( "size>>> "+ list.size());
         for (GuestBook guestBook : list) {
            System.out.println( "---> "+ guestBook.getVisitorName() );
            System.out.println( "---> "+ guestBook.getMessage() );
            System.out.println( "---> "+ guestBook.getMessageDate() );
        }
        System.out.println( "data commited ");
    } catch (HibernateException e) {
        e.printStackTrace();
    } //catch (ParseException e) {
        //e.printStackTrace();
    //}
finally{
          // Actual contact insertion will happen at this step
    /*if (!transaction.wasCommitted()) {
        transaction.rollback();
    }*/

          //session.flush();
          session.close();

          }
}

}

当测试类运行时,它只返回dp表的最后一条记录。如果db包含5个记录,则测试类返回最后一个记录的5倍。请帮帮我

当我们使用createSqlQuery时

SQLQuery q = session.createSQLQuery( "select * from GuestBook" ).addScalar("visitorNo", Hibernate.INTEGER).addScalar("visitorName", Hibernate.STRING)
        .addScalar("message", Hibernate.STRING).addScalar("messageDate", Hibernate.STRING);
         System.out.println( "size>>> "+ q.list().size());
            List<Object[]> entities = q.list();
            for (Object[] entity : entities) {
                for (Object entityCol : entity) {
                    System.out.print(" " + entityCol);
                }
                System.out.println("");
            }

获得独特的输出

0 个答案:

没有答案