- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我收到了从中创建列表的查询,然后将该列表传递给另一个应该打印它的方法。
Query query = session.createQuery("from Osoba as o FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?)");
// Query query = session.createQuery("from Osoba WHERE (LOWER(zainteresowania) LIKE ?)"); // Stara, zachowana tymczasowo
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);
session.getTransaction().commit();
session.close();
}
例如。当我想打印所有内容时,我只使用:
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
打印我通过的方法:
private void wyswietlWybrane(List<Osoba> osoby) {
for (Osoba a : osoby) {
List zainteresowania1 = a.getZainteresowania();
System.out.println(a.getId() +". " + a.getImie() + " " + a.getNazwisko() + "\nTelefon: " + a.getTelefon() + "\nEmail: " + a.getEmail() + "\nUczelnia: " + a.getUczelnia() + "\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() + ". ");
}
}
}
map 文件:
奥索巴
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.mycompany.kwestionariusz">
<class name="Osoba" table="DANEOSOBOWE">
<id name="id" column="ID" type="integer">
<generator class="native"/>
</id>
<property name="imie" column="Imie"/>
<property name="nazwisko" column="Nazwisko"/>
<property name="telefon" column="Telefon"/>
<property name="email" column="Email" />
<property name="uczelnia" column="Uczelnia" />
<property name="doswiadczenie" column="Doswiadczenie" />
<list name="zainteresowania" cascade="all">
<key column="id_osoby"/>
<list-index column="idx"/>
<one-to-many class="Zainteresowania"/>
</list>
<property name="skadSlyszal" column="SkadSlyszal" />
</class>
</hibernate-mapping>
Zainteresowania:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.mycompany.kwestionariusz">
<class name="Zainteresowania" table="ZAINTERESOWANIA">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="zainteresowanie" column="zainteresowanie" type="string"/>
</class>
</hibernate-mapping>
Osoba 类:
private int id;
private String imie;
private String nazwisko;
private String email;
private String telefon;
private String uczelnia;
private String doswiadczenie;
private String skadSlyszal;
private List zainteresowania;
public Osoba(){ // domyslny
}
// konstruktor zeby mozna bylo sobie w jednej linijce dodawac osobe
public Osoba(String imie1, String nazwisko1, String telefon1, String email1, String uczelnia1, String doswiadczenie1, String skadSlyszal1 ){
this.imie = imie1;
this.nazwisko = nazwisko1;
this.email = email1;
this.telefon = telefon1;
this.uczelnia = uczelnia1;
this.doswiadczenie = doswiadczenie1;
this.skadSlyszal = skadSlyszal1;
}
// kontr przyj caly obiekt
public Osoba(Osoba tymczasowa){
this.imie = tymczasowa.imie;
this.nazwisko = tymczasowa.nazwisko;
this.email = tymczasowa.email;
this.telefon = tymczasowa.telefon;
this.uczelnia = tymczasowa.uczelnia;
this.doswiadczenie = tymczasowa.doswiadczenie;
this.skadSlyszal = tymczasowa.skadSlyszal;
}
// gettery, settery
public int getId() {
return id;
}
public String getImie() {
return imie;
}
public String getNazwisko() {
return nazwisko;
}
public String getEmail() {
return email;
}
public String getTelefon() {
return telefon;
}
public String getUczelnia() {
return uczelnia;
}
public String getDoswiadczenie() {
return doswiadczenie;
}
public List getZainteresowania() {
return zainteresowania;
}
public String getSkadSlyszal() {
return skadSlyszal;
}
public void setImie(String string) {
this.imie = string;
}
public void setId(int in) {
this.id = in;
}
public void setNazwisko(String string) {
this.nazwisko = string;
}
public void setEmail(String string) {
this.email = string;
}
public void setTelefon(String string) {
this.telefon = string;
}
public void setUczelnia(String string) {
this.uczelnia = string;
}
public void setDoswiadczenie(String string) {
this.doswiadczenie = string;
}
public void setZainteresowania(List string) {
this.zainteresowania = string;
}
public void setSkadSlyszal(String string) {
this.skadSlyszal = string;
}
Zainteresowania 级:
private int id;
private String zainteresowanie;
public Zainteresowania(){ // domyslny
}
public Zainteresowania(String zainteresowanie){
this.zainteresowanie = zainteresowanie;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getZainteresowanie() {
return zainteresowanie;
}
public void setZainteresowanie(String zainteresowanie) {
this.zainteresowanie = zainteresowanie;
}
好吧,当我尝试执行此搜索查询并传递参数时,我收到错误:
ERROR: Invalid path: 'null.zainteresowanie'
kwi 22, 2015 3:05:00 PM org.hibernate.hql.internal.ast.ErrorCounter reportError
ERROR: Invalid path: 'null.zainteresowanie'
Invalid path: 'null.zainteresowanie'
Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'null.zainteresowanie' [from com.mycompany.kwestionariusz.Osoba as o FETCH ALL PROPERTIES WHERE ((o.id) = (id_osoby)) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?) and (LOWER(Zainteresowania.zainteresowanie) LIKE ?)]
当我将查询更改为:
Query query = session.createQuery("from Osoba as 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 ?)");
我收到错误:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.mycompany.kwestionariusz.Osoba
at com.mycompany.kwestionariusz.Osoba.wyswietlWybrane(Osoba.java:226)
at com.mycompany.kwestionariusz.Osoba.wyszukajOsoby(Osoba.java:218)
at com.mycompany.kwestionariusz.main.main(main.java:42)
第 226 行(其 wyswietlWybrane 方法,发布在那里)
for (Osoba a : osoby) {List zainteresowania1 = a.getZainteresowania();
第218行(搜索方法的一部分):
wyswietlWybrane(osoby);
我确实需要帮助,尝试了很多方法,似乎都不起作用。
我相信原因是搜索查询正在创建除 Osoba 列表之外的其他列表 - 但我需要将 Osoba ID 与 Zainteresowania ID_Osoby 进行比较,那么如何做到这一点并且仍然能够将我的结果列表传递给我的 wyswietlWybrane 方法?
最佳答案
您遇到此问题的原因是您在查询的 FROM 部分中指定了两个 Hibernate 实体,并且默认情况下选择了两个表的每一列,因为您没有指定 SELECT。
这将返回实体属性的 Object[],这就是您收到强制转换异常的原因。
要解决此问题,请尝试显式选择您想要的 o 实体的每个命名属性,它应该足够智能,可以正确映射到 o 实体而不是 Object[]。
我还注意到您实际上并没有将两个表连接在一起。我相信这会给你一个笛卡尔积。要解决此问题,请将联接添加到您的过滤器:
... from Osoba as o INNER JOIN o.zainteresowania as z FETCH ALL ...
这会将 z 实体限制为 o 中作为子项存在的实体。
关于Java SQL 查询 - Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798828/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!