- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 列,一列包含人,第二列包含他们的兴趣。
我需要根据他们的兴趣搜索查询。
(如果您需要一些信息而我没有在这里提供,我可能在这里提供了:Java SQL Query - Hibernate)
此刻我正在尝试这样做:
Query query = session.createQuery("SELECT new com.mycompany.kwestionariusz.Osoba(o.id, o.imie, o.nazwisko, o.telefon, o.email, o.uczelnia, o.doswiadczenie, o.skadSlyszal) from Osoba as o INNER JOIN o.zainteresowania as z FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?)");
//Query query2 = session.createQuery("SELECT new com.mycompany.kwestionariusz.Osoba(o.id, o.imie, o.nazwisko, o.telefon, o.email, o.uczelnia, o.doswiadczenie, o.skadSlyszal) from Osoba as o INNER JOIN o.zainteresowania as z FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?) and (LOWER(z.zainteresowanie) LIKE ?)");
query.setString(0,"%"+input1+"%");
query.setString(1,"%"+input2+"%");
query.setString(2,"%"+input3+"%");
query.setString(3,"%"+input4+"%");
query.setString(4,"%"+input5+"%");
List<Osoba> osoby = query.list(); // robimy sobie liste na podst zapytania
wyswietlWybrane(osoby);
wyswietlWybrane 方法:
private void wyswietlWybrane(List<Osoba> osoby) {
for (Osoba a : osoby) {
List zainteresowania1 = a.getZainteresowania();
System.out.println("\n\n" + a.getId() +". " + a.getImie() + " " + a.getNazwisko() + "\nTelefon: " + a.getTelefon() + "\nEmail: " + a.getEmail() + "\nUczelnia: " + a.getUczelnia() + "\nDoswiadczenie: " + a.getDoswiadczenie() + "\t\n" + "Skad slyszal: " + a.getSkadSlyszal());
System.out.print("Obszary zainteresowan: ");
for (Iterator iterator2 = zainteresowania1.iterator(); iterator2.hasNext();){
Zainteresowania nazwa = (Zainteresowania) iterator2.next();
System.out.print(nazwa.getZainteresowanie() + ". ");
}
}
}
显示全部方法:
public void wyswietlWszystkie()
{
try
{
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List<Osoba> osoby = session.createQuery("from Osoba").list(); // tworzymy sobie liste z zapytania do bazy ktora wyswietli nam wszystkich
wyswietlWybrane(osoby); // przekazujym ta liste do innej i wyswietlamy
session.getTransaction().commit();
session.close();
}
catch (HibernateException e)
{
HibernateUtil.getSessionFactory().close(); //Destroy this SessionFactory and release all resources (caches, connection pools, etc).
}
}
我现在使用的查询有一些问题。
首先。当我使用 WyswietlWszystkie 方法时,我得到了这样的输出:
1. Krystian Example
Telefon: 900900900
Email: example@example.com
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan: Java. Android. Technologie WWW (HTML, CSS, JavaScript). Projektowanie aplikacji.
但是当我使用我的搜索方法并将列表传递给 wyswietlWybrane 时(在 wyswietlWszystkie 中我也将列表传递给该方法)。
我得到这样的输出:(它搜索:Java):
1. Krystian Example
Telefon: 900900900
Email: example@example.com
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan:
1. Krystian Example
Telefon: 900900900
Email: example@example.com
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan:
如您所见,它翻倍了,而我看不到“obszary zaintereson”。
现在搜索:Java 和 Android 没有给出任何结果(应该是因为这个人同时拥有它们)。
对于 Technologie WWW 和 Java:
1. Krystian Example
Telefon: 900900900
Email: example@example.com
Uczelnia: Example School
Doswiadczenie: Example experience
Skad slyszal: Friends
Obszary zainteresowan:
所有类(class)等都已包含在我在文章开头提供链接的主题中。
如何进行搜索查询?发什么疯?
最佳答案
在查看您的查询后,我意识到您的 HQL 存在一些需要解决的问题。请参阅此处的部分:
https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html#queryhql-joins
A fetch join does not usually need to assign an alias, because the associated objects should not be used in the where clause (or any other clause)
因此,通过执行 FETCH ALL PROPERTIES,您无法在同一查询中过滤 z 个子项。那么您的查询应该如下所示:
SELECT new com.mycompany.kwestionariusz.Osoba(
o.id, o.imie, o.nazwisko, o.telefon, o.email,
o.uczelnia, o.doswiadczenie, o.skadSlyszal)
from Osoba as o
INNER JOIN o.zainteresowania as z
WHERE ((o.id) = (id_osoby))
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
and (LOWER(z.zainteresowanie) LIKE ?)
我唯一不确定的是这里的这个属性:
(id_osoby)
我在任何地方都没有看到这个别名,而且我在你的任何表格中都没有看到这一列。您确定需要这个吗?
因此,这将为您提供 o 个已按 z 个子项的属性过滤的父实体。然而,z 子级是惰性的,因此您必须通过 z ID 独立查询它们,或者您应该能够在同一个 hibernate 事务中延迟获取它们,只需调用 getter 方法返回 z 子级列表。
关于java - hibernate 搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29818019/
我在我的应用程序中使用 Hibernate Search。其中一个子集合被映射为 IndexedEmbedded。子对象有两个字段,一个是 id,另一个是日期(使用日期分辨率到毫秒)。当我搜索 id=
The App Engine Search API有一个 GeoPoint 字段。可以用它来进行半径搜索吗?例如,给定一个 GeoPoint,查找位于特定半径内的所有文档。 截至目前,它看起来像 Ge
客户对我正在做的员工管理项目提出了这个新要求,以允许他们的用户进行自定义 bool 搜索。 基本上允许他们使用:AND、OR、NOT、括号和引号。 实现它的最佳方法是什么?我检查了 mysql,它们使
很想知道哪个更快 - 如果我有一个包含 25000 个键值对的数组和一个包含相同信息的 MySQL 数据库,搜索哪个会更快? 非常感谢大家! 最佳答案 回答这个问题的最好方法是执行基准测试。 关于ph
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
我有以下 Marklogic 查询,当在查询控制台中运行时,它允许我检索具有管理员权限的系统用户: xquery version "1.0-ml"; import schema namespace b
我希望当您搜索例如“A”时,所有以“A”开头的全名都会出现。因此,如果名为“Andreas blabla”的用户将显示 我现在有这个: $query = "SELECT full_name, id,
我想在我的网站上添加对人名的搜索。好友列表已经显示在页面上。 我喜欢 Facebook 这样做的方式,您开始输入姓名,Facebook 只会显示与查询匹配的好友。 http://cl.ly/2t2V0
您好,我在我的网站上进行搜索时遇到此错误。 Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /ho
声明( 叠甲 ):鄙人水平有限,本文为作者的学习总结,仅供参考。 1. 搜索介绍 搜索算法包括深度优先搜索(DFS)和广度优先搜索(BFS)这两种,从起点开始,逐渐扩大
我正在为用户列表使用 FuturBuilder。我通过 futur: fetchpost() 通过 API 获取用户。在专栏的开头,我实现了一个搜索栏。那么我该如何实现我的搜索栏正在搜索呢? Cont
我正在使用 MVC5,我想搜索结果并停留在同一页面,这是我在 Controller (LiaisonsProjetsPPController) 中执行搜索操作的方法: public ActionRes
Azure 搜索中的两种方法 Upload 与 MergeOrUpload 之间有什么区别。 他们都做完全相同的事情。即,如果文档不存在,它们都会上传文档;如果文档已经存在,则替换该文档。 由于这两种
实际上,声音匹配/搜索的当前状态是什么?我目前正在远程参与规划一个 Web 应用程序,该应用程序将包含和公开记录的短音频剪辑(最多 3-5 秒,人名)的数据库。已经提出了一个问题,是否可以实现基于用户
在商业应用程序中,具有数百个面并不罕见。当然,并非所有产品都带有所有这些标记。 但是在搜索时,我需要添加一个方面查询字符串参数,其中列出了我想要返回的所有方面。由于我事先不知道相关列表,因此我必须在查
当我使用nvcc 5.0编译.cu文件时,编译器会为我提供以下信息。 /usr/bin/ld: skipping incompatible /usr/local/cuda-5.0/lib/libcud
我正在使用基于丰富的 Lucene 查询解析器语法的 Azure 搜索。我将“~1”定义为距离符号的附加参数)。但我面临的问题是,即使存在完全匹配,实体也没有排序。 (例如,“blue~1”将返回“b
我目前有 3 个类,一个包含 GUI 的主类,我在其中调用此方法,一个包含数据的客户类,以及一个从客户类收集数据并将其放入数组列表的 customerList 类,以及还包含搜索数组列表方法。 我正在
假设我有多个 6 字符的字母数字字符串。 abc123、abc231、abc456、cba123、bac231 和 bac123 。 基本上我想要一个可以搜索和列出所有 abc 实例的选择语句。 我只
我有这个表 "Table"内容: +--------+ | Serial | +--------+ | d100m | <- expected result | D100M | <- expect
我是一名优秀的程序员,十分优秀!