我明白了:
Query query = session.createQuery("
from Osoba
WHERE (zainteresowania LIKE '%iOS%')
and (zainteresowania LIKE '%Java%')
and (zainteresowania LIKE '%Android%')"
);
工作正常,但我需要一种方法来问我:你想搜索什么?我可以告诉它类似:Android和Ubuntu 这意味着它必须在col zainteresowania的数据库中搜索那两个表格,如果有人拥有它,那么我就打印出来。
正如我所说,这是一个如何存储在col中的例子:
答案 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+"%");