如何使用Hibernate条件选择嵌套属性
我有三个实体,如注册、用户和国家。基本上,注册属于一个用户,用户属于一个国家。现在,我正在尝试从以下注册中选择国家名称如何使用Hibernate条件选择嵌套属性,hibernate,Hibernate,我有三个实体,如注册、用户和国家。基本上,注册属于一个用户,用户属于一个国家。现在,我正在尝试从以下注册中选择国家名称 Criteria criteria = getSession().createCriteria(Registration.class); ProjectionList projectionList = Projections.projectionList(); criteria.createAlias("user.country"
Criteria criteria = getSession().createCriteria(Registration.class);
ProjectionList projectionList = Projections.projectionList();
criteria.createAlias("user.country", "usercountry");
projectionList.add(Projections.property("usercountry.name"),"usercountry.name");
criteria.setProjection(projectionList);
criteria.list();
这失败了,请告诉我:
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unknown column 'usercountr1_.name' in 'field list'
org.hibernate.exception.SQLGrammarException: Unknown column 'usercountr1_.name' in 'field list'
生成的休眠查询:
Hibernate: select usercountr1_.name as y0_ from voucherList this_
我注意到sql中没有联接。这就是查询失败的原因吗?我如何解决这个问题?试试类似的方法
Criteria criteria = getSession().createCriteria(Registration.class);
ProjectionList projectionList = Projections.projectionList();
criteria.createAlias("user", "u"); // here i changed
criteria.createAlias("u.country", "usercountry"); // here i have changed
projectionList.add(Projections.property("usercountry.name"),"usercountry.name");
criteria.setProjection(projectionList);
criteria.list();
谢谢,我刚刚发现我需要创建两个别名,而不是一个。可能是