休眠选择的方法

时间:2015-04-20 13:42:01

标签: java hibernate

我明白了:

Query query = session.createQuery("
    from Osoba 
        WHERE (zainteresowania LIKE '%iOS%') 
        and (zainteresowania LIKE '%Java%') 
        and (zainteresowania LIKE '%Android%')"
    );

工作正常,但我需要一种方法来问我:你想搜索什么?我可以告诉它类似:Android和Ubuntu 这意味着它必须在col zainteresowania的数据库中搜索那两个表格,如果有人拥有它,那么我就打印出来。

正如我所说,这是一个如何存储在col中的例子:

  1. Java
  2. Platforma .NET(C#)
  3. Android
  4. iOS
  5. Windows Phone
  6. Testowanie aplikacji

2 个答案:

答案 0 :(得分:2)

您可以使用定位参数或编号参数(如下所述)将参数动态传递给SQL查询:

定位参数

 String input1=// got from user
    String input2=// got from user
    Query query = session.createQuery("from Osoba WHERE (zainteresowania LIKE ?) and (zainteresowania LIKE ?)")
.setString(0,"%"+input1+"%")
.setString(1,"%"+input2+"%")
.list();

命名参数:

String hql = "from Osoba WHERE (zainteresowania LIKE :user_input1) and (zainteresowania LIKE :user_input2)";
List result = session.createQuery(hql)
.setParameter("user_input1", "%Java%")
.setParameter("user_input2","%Android%");
.list();

有关详细信息,请参阅here

答案 1 :(得分:0)

你的方式帮助了我很多。我也能够“动态地”做到这一点。

这是我的代码:

 String input3 = ("");
       String input4 = ("");
       String input5 = ("");
          Scanner in = new Scanner(System.in);
          System.out.println("First");
          String input1 = in.nextLine();
          System.out.println("Second(empty field to break)");
          String input2 = in.nextLine();
          if (!input2.isEmpty())
                  {
          System.out.println("Third(empty field to break)");
          input3 = in.nextLine();          
          if (!input3.isEmpty())
                 {
          System.out.println("Fourth(empty field to break)");
          input4 = in.nextLine();   
          if (!input4.isEmpty())
                 {
          System.out.println("Fifth(empty field to break)");
          input5 = in.nextLine();
                 }       
                 }
                 }



          Query query = session.createQuery("from Osoba WHERE (zainteresowania LIKE ?) and (zainteresowania LIKE ?) and (zainteresowania LIKE ?) and (zainteresowania LIKE ?) and (zainteresowania LIKE ?)");
          query.setString(0,"%"+input1+"%");
          query.setString(1,"%"+input2+"%");
          query.setString(2,"%"+input3+"%");
          query.setString(3,"%"+input4+"%");
          query.setString(4,"%"+input5+"%");