0

私は次のコードを持っていて、挿入が行われていますが、query() のクエリは、それが想定している println を出力していません。

package com;

import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;

import roseindia.tutorial.hibernate.Insurance;

import com.Employee;

public class EmployeeEx 
{

public static void main(String[] args) 
{
    Session session = null;

    try
    {       
        Transaction transaction = null; 

        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        session =sessionFactory.openSession();

        File f=new File("c:/Class/Employee1.txt") ;
        Scanner scan=new Scanner(f);

        transaction = session.beginTransaction();
        while(scan.hasNext())
        {               
            Employee em = new Employee();
            String line=scan.nextLine();            
            String empArray[]=line.split(" ");

            em.setId(Integer.parseInt(empArray[0]));
            em.setName(empArray[1]);
            em.setSalary(Double.parseDouble(empArray[2]));
            em.setManager(empArray[3]);
            session.save(em);
            transaction.commit();
        }   
  query();//calling the query method

}
catch(Exception e)
{
    System.out.println(e.getMessage());
}

finally
{
    session.flush();
    session.close();
}
}

public static void query()
{
    Session session = null;
    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
    session =sessionFactory.openSession();

    Criteria criteria = session.createCriteria(Employee.class);
    criteria.add(Restrictions.like("manager", "Anurag"));
    criteria.add(Restrictions.gt("salary", 1000));

    List emp = criteria.list();
    for(Iterator it = emp.iterator();it.hasNext();)
    {
        Employee em = (Employee) it.next();
        System.out.println("Id: " +em.getId());;
        System.out.println("Name: " +em.getName());
        System.out.println("Salary: " +em.getSalary());
        System.out.println("Manager: " +em.getManager());

    }
    session.close();
}

}

これはコンソールに表示されるものです:(挿入は正常に機能しています)

Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: insert into EMPLOYEE1 (NAME, SALARY, MANAGER, ID) values (?, ?, ?, ?)
Hibernate: select this_.ID as ID0_, this_.NAME as NAME7_0_, this_.SALARY as SALARY7_0_,    this_.MANAGER as MANAGER7_0_ from EMPLOYEE1 this_ where this_.MANAGER like ? and this_.SALARY>? java.lang.Integer
4

2 に答える 2

0

query()メソッドを呼び出していないため、メソッドは実行されていません。

とにかく、あなたがそれmain()を作らない限り、あなたはそれを呼び出すことはできませんstatic:

public static void query()

main()クラスを実行するとメソッドのみが実行されるためstatic、 のメソッド シグネチャに追加した後、次の行をメソッドquery()のどこかに追加します。main()

query();
于 2012-08-17T18:27:58.180 に答える
0

メソッドを呼び出してquery()も何も出力されない場合は、empリストが空であることを意味します。クエリの制限に一致するレコードがあるかどうか、データベースを確認してください。その場合は、 list の内容を確認してくださいemp

于 2012-08-20T00:49:23.190 に答える