MySQL 查询到 Hibernate Query
MySQL query to Hibernate Query
谁能给我与下面给出的 MySQL 查询等效的 Hibernate 查询。我这几天没试过,但没成功。
这是MySql查询
SELECT * FROM product WHERE category_id IN (SELECT id FROM category WHERE parent_category_id IN (SELECT id FROM category WHERE parent_category_id=53));
我写的 Hibernate 查询是。
public List<Product> findBy2ndLevel(String categoryName) {
Query query = null;
StringBuilder hql = new StringBuilder();
try {
hql.append("from Product product where product.category.id in");
hql.append("(select id from Category category where category.parentCategory.id in");
hql.append("(select id from Category category where category.parentCategory.id=:category_id))");
query = sessionFactory.getCurrentSession().createQuery(hql.toString());
query.setParameter("category_id",Integer.parseInt(categoryName));
} catch (HibernateException e) {
e.printStackTrace();
}
return query.list();
}
虽然它不起作用。给任何人正确的或给我等效的 HQ。
我假设实体产品有 1 个类别和一个变量(称为 category
),并且一个类别有 1 个父类别和一个变量(称为 parent
).
但是,类似于:
select p
from Product p join p.category c join c.parent pc
where pc.id = :categoryId
此外,我并没有真正理解你的变量使用,你 link 类别的 id 与 categoryName
,并包含一个变量 orgaId
,它从未真正用于任何事情.. 此外,如果查询创建失败,您的代码将生成 NullPointerException
。
谁能给我与下面给出的 MySQL 查询等效的 Hibernate 查询。我这几天没试过,但没成功。
这是MySql查询
SELECT * FROM product WHERE category_id IN (SELECT id FROM category WHERE parent_category_id IN (SELECT id FROM category WHERE parent_category_id=53));
我写的 Hibernate 查询是。
public List<Product> findBy2ndLevel(String categoryName) {
Query query = null;
StringBuilder hql = new StringBuilder();
try {
hql.append("from Product product where product.category.id in");
hql.append("(select id from Category category where category.parentCategory.id in");
hql.append("(select id from Category category where category.parentCategory.id=:category_id))");
query = sessionFactory.getCurrentSession().createQuery(hql.toString());
query.setParameter("category_id",Integer.parseInt(categoryName));
} catch (HibernateException e) {
e.printStackTrace();
}
return query.list();
}
虽然它不起作用。给任何人正确的或给我等效的 HQ。
我假设实体产品有 1 个类别和一个变量(称为 category
),并且一个类别有 1 个父类别和一个变量(称为 parent
).
但是,类似于:
select p
from Product p join p.category c join c.parent pc
where pc.id = :categoryId
此外,我并没有真正理解你的变量使用,你 link 类别的 id 与 categoryName
,并包含一个变量 orgaId
,它从未真正用于任何事情.. 此外,如果查询创建失败,您的代码将生成 NullPointerException
。