hibernate 级联查询
2015-08-14 14:22
148 查看
在网上找了好多都没找到自己想要的后来,慢慢试才试出来,
看代码
public class Metters {
private Integer id; // id
private String mettercome;
private String metterdate;
private String mettersort;
private String mettername;
private String mettercontent;
private String metterstate;
private String mettercomment;
private String metterapprovaldate;
private User user;
public Metters(){
}
public Metters(String mettername, String metterstate, Integer id) {
this.mettername = mettername;
this.metterstate = metterstate;
this.id = id;
}
}
省略了get set 再来User代码
public class User {
private Integer id;
private String name;
private String account;
private String password;
private Set<Metters> metters = new HashSet<Metters>();
省略 get set
}
再来看各个的hbm.xml
<hibernate-mapping package="xxxxxxxxxx.domain">
<class name="Metters" table="metters">
<id name="id" type="java.lang.Integer">
<generator class="native" />
</id>
<property name="mettercome" length="50" type="java.lang.String" />
<property name="metterdate" length="20" type="java.lang.String"
not-null="true" />
<property name="mettersort" length="10" type="java.lang.String" />
<property name="mettername" length="240" type="java.lang.String"
not-null="true" />
<property name="mettercontent" length="255" type="java.lang.String"
not-null="true" />
<property name="metterstate" length="10" type="java.lang.String"/>
<property name="mettercomment" length="255" type="java.lang.String"/>
<property name="metterapprovaldate" length="20" type="java.lang.String"
not-null="true"></property>
<!-- user属性,本类与User的多对一关系 -->
<many-to-one name="user" class="User" column="userId" lazy="false"></many-to-one>
</class>
</hibernate-mapping>
<hibernate-mapping package="xxxxxxxxx.domain">
<class name="User" table="user">
<id name="id" type="java.lang.Integer">
<generator class="native" />
</id>
<property name="account" length="50" type="java.lang.String"
not-null="true" />
<property name="name" length="50" type="java.lang.String"
not-null="true" />
<property name="password" length="50" type="java.lang.String"
not-null="true" />
<!-- metters属性,本类与Metters的一对多关系 -->
<set name="metters" >
<key column="userId"></key>
<one-to-many class="Metters"/>
</set>
</class>
</hibernate-mapping>
这里有个多对一的关系 再来看查询语句,,,,根据用户的id来查询Metters里面的内容
String hql = "select new Metters(m.mettername,m.metterdate,m.id) from Metters as m where m.user.id=?";
Query query = this.getSession().createQuery(hql);
query.setParameter(0, userId);
List<Metters> metters = query.list();
看代码
public class Metters {
private Integer id; // id
private String mettercome;
private String metterdate;
private String mettersort;
private String mettername;
private String mettercontent;
private String metterstate;
private String mettercomment;
private String metterapprovaldate;
private User user;
public Metters(){
}
public Metters(String mettername, String metterstate, Integer id) {
this.mettername = mettername;
this.metterstate = metterstate;
this.id = id;
}
}
省略了get set 再来User代码
public class User {
private Integer id;
private String name;
private String account;
private String password;
private Set<Metters> metters = new HashSet<Metters>();
省略 get set
}
再来看各个的hbm.xml
<hibernate-mapping package="xxxxxxxxxx.domain">
<class name="Metters" table="metters">
<id name="id" type="java.lang.Integer">
<generator class="native" />
</id>
<property name="mettercome" length="50" type="java.lang.String" />
<property name="metterdate" length="20" type="java.lang.String"
not-null="true" />
<property name="mettersort" length="10" type="java.lang.String" />
<property name="mettername" length="240" type="java.lang.String"
not-null="true" />
<property name="mettercontent" length="255" type="java.lang.String"
not-null="true" />
<property name="metterstate" length="10" type="java.lang.String"/>
<property name="mettercomment" length="255" type="java.lang.String"/>
<property name="metterapprovaldate" length="20" type="java.lang.String"
not-null="true"></property>
<!-- user属性,本类与User的多对一关系 -->
<many-to-one name="user" class="User" column="userId" lazy="false"></many-to-one>
</class>
</hibernate-mapping>
<hibernate-mapping package="xxxxxxxxx.domain">
<class name="User" table="user">
<id name="id" type="java.lang.Integer">
<generator class="native" />
</id>
<property name="account" length="50" type="java.lang.String"
not-null="true" />
<property name="name" length="50" type="java.lang.String"
not-null="true" />
<property name="password" length="50" type="java.lang.String"
not-null="true" />
<!-- metters属性,本类与Metters的一对多关系 -->
<set name="metters" >
<key column="userId"></key>
<one-to-many class="Metters"/>
</set>
</class>
</hibernate-mapping>
这里有个多对一的关系 再来看查询语句,,,,根据用户的id来查询Metters里面的内容
String hql = "select new Metters(m.mettername,m.metterdate,m.id) from Metters as m where m.user.id=?";
Query query = this.getSession().createQuery(hql);
query.setParameter(0, userId);
List<Metters> metters = query.list();
相关文章推荐
- 集合运算的基本法则
- POJ 3468 A Simple Problem with Integers
- 如何退出Activity?如何安全退出已调用多个Activity的Application?
- 根据sessionId获取相应的session
- Validform_checktip
- 【IOS】ios8推送消息注册
- Animation动画之AlphaAnimation(透明度变化)
- 黑马程序员--Java集合框架(3)
- javascript keycode大全
- 几个移动App测试工具
- IOS AFNetWorking 下载文件 断点续传
- ExtJs4 - grid 合并单元格 跨行跨列
- Java反射实现根据field对JavaBean的排序
- poj 3261 Milk Patterns (后缀数组)
- SendFax过程分析
- 在WPF中使用百分比的布局方式
- vc使用CToolTipCtrl类实现提示信息效果
- hadoop识别多个文件读入
- NSIS 生成快捷方式 (学习 一)
- c调用程序并得到其输出的方法