三个表:
User:
ID
UserLevelID
UserGenderIDUserLevel:
ID
NameUserGender:
ID
Name通过SQL语句根据得到User ID得到UserLevel Name和UserGender Name如下
select a.ID, b.Name, C.Name from User as a
left join UserLevel as b on a.UserLevelID = b.ID
left join UserGender as c on a.UserGenderID = c.ID请问通过HQL如何得到同样的结果? 谢谢!// user.hbm.xml:
<hibernate-mapping package="mwgalaxy.model">
<class name="User" table="usertable">
<id name="id" column="ID">
<generator class="identity"/>
</id>
<property name="ulid" column="UserLevelID" not-null="true" length="32"/>
<property name="ugid" column="UserGenderID" not-null="true" length="32"/>
</class>
</hibernate-mapping>
...
// userlevel.hbm.xml:
<hibernate-mapping package="mwgalaxy.model">
<class name="UserLevel" table="userleveltable">
<id name="id" column="ID">
<generator class="identity"/>
</id>
<property name="name" column="Name" not-null="true" length="64"/>
</class>
</hibernate-mapping>
...// XXX.java
hql = ????;
Session session = HibernateUtil.currentSession();
tx = session.beginTransaction();
Query query = session.createQuery(hql);
User:
ID
UserLevelID
UserGenderIDUserLevel:
ID
NameUserGender:
ID
Name通过SQL语句根据得到User ID得到UserLevel Name和UserGender Name如下
select a.ID, b.Name, C.Name from User as a
left join UserLevel as b on a.UserLevelID = b.ID
left join UserGender as c on a.UserGenderID = c.ID请问通过HQL如何得到同样的结果? 谢谢!// user.hbm.xml:
<hibernate-mapping package="mwgalaxy.model">
<class name="User" table="usertable">
<id name="id" column="ID">
<generator class="identity"/>
</id>
<property name="ulid" column="UserLevelID" not-null="true" length="32"/>
<property name="ugid" column="UserGenderID" not-null="true" length="32"/>
</class>
</hibernate-mapping>
...
// userlevel.hbm.xml:
<hibernate-mapping package="mwgalaxy.model">
<class name="UserLevel" table="userleveltable">
<id name="id" column="ID">
<generator class="identity"/>
</id>
<property name="name" column="Name" not-null="true" length="64"/>
</class>
</hibernate-mapping>
...// XXX.java
hql = ????;
Session session = HibernateUtil.currentSession();
tx = session.beginTransaction();
Query query = session.createQuery(hql);
如果你的实体使用了关联映射的话 你只要查询到 User 就可以吧与它相关联的UserLevel、UserGender
自动查询出来 就没必要写连接查询语句了
本人建议使用关联映射解决这个问题
2. getUser().getUserLevel().getName();
getUser().getUserGender().getName();或者:
1. 原生SQL.