select * from A a left join B b on a.user_id=b.user_id
<?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>
<class name="com.maggie.A" table="A" >
<id name="userId" type="Integer">
<column name="user_id" />
</id>
<property name="deptId" type="integer">
<column name="dept_id" />
</property>
<property name="managerid" type="integer">
<column name="managerid" />
</property>
<join name="com.maggie.B" table="B" optional="true">
<key column="user_id" />
</join>
</class>
</hibernate-mapping>
optional属性是定义该关联类是否必须存在.
- 值为false 时,关联类双方都必须存在,如果关系被维护端不存在,查询的结果为null。
- 值为true 时, 关系被维护端可以不存在,查询的结果仍然会返回关系维护端,在关系维护端中指向关系被维护端的属性为null。
optional属性的默认值是true。
简单来说,
- optional=false ==》 join 查询关系为inner join,
- optional=true ==》join 查询关系为left join。