Java 具有一对多关系的Hibernate条件搜索请求
我试着这样做:Java 具有一对多关系的Hibernate条件搜索请求,java,hibernate,one-to-many,criteria,hibernate-criteria,Java,Hibernate,One To Many,Criteria,Hibernate Criteria,我试着这样做: session = HibernateUtil.getSessionFactory().openSession(); Criteria cr = session.createCriteria(Car.class); cr.createAlias("vendor", "vendor"); cr.add( Restrictions.eq("vendor.name", input)); results = (List<Car>) cr.list(); 我还在Vend
session = HibernateUtil.getSessionFactory().openSession();
Criteria cr = session.createCriteria(Car.class);
cr.createAlias("vendor", "vendor");
cr.add( Restrictions.eq("vendor.name", input));
results = (List<Car>) cr.list();
我还在Vendor
类中找到了name
列,我正试图在其中搜索
那么我怎么可能做这样的搜索请求呢
谢谢。您需要将您的条件重新分配给原始对象 您将所有汽车取回的原因是,将供应商添加到查询中的代码行创建了一个新的
条件
对象,而您当时不使用该对象
更改:
session = HibernateUtil.getSessionFactory().openSession();
Criteria cr = session.createCriteria(Car.class);
cr.createCriteria("vendor").add(Restrictions.eq("name", input)); //Does nothing
results = (List<Car>) cr.list();
session=HibernateUtil.getSessionFactory().openSession();
Criteria cr=session.createCriteria(Car.class);
cr.createCriteria(“供应商”)。添加(Restrictions.eq(“名称”,输入))//无所事事
结果=(列表)cr.List();
为此:
session = HibernateUtil.getSessionFactory().openSession();
Criteria cr = session.createCriteria(Car.class);
cr = cr.createCriteria("vendor").add(Restrictions.eq("name", input));
results = (List<Car>) cr.list();
session=HibernateUtil.getSessionFactory().openSession();
Criteria cr=session.createCriteria(Car.class);
cr=cr.createCriteria(“供应商”)。添加(Restrictions.eq(“名称”,输入));
结果=(列表)cr.List();
如果你不能得到唯一的Car.class结果,你需要设置结果变压器
Criteria cr = session.createCriteria(Car.class);
cr.createAlias("vendor", "vendor");
cr.add( Restrictions.eq("vendor.name", input));
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
results = (List<Car>) cr.list();
Criteria cr=session.createCriteria(Car.class);
cr.createAlias(“供应商”、“供应商”);
cr.add(Restrictions.eq(“供应商名称”,输入));
crit.setResultTransformer(Criteria.DISTINCT\u ROOT\u实体);
结果=(列表)cr.List();
session = HibernateUtil.getSessionFactory().openSession();
Criteria cr = session.createCriteria(Car.class);
cr = cr.createCriteria("vendor").add(Restrictions.eq("name", input));
results = (List<Car>) cr.list();
Criteria cr = session.createCriteria(Car.class);
cr.createAlias("vendor", "vendor");
cr.add( Restrictions.eq("vendor.name", input));
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
results = (List<Car>) cr.list();