请问Hibernate怎么实现表与表之间的关连?
比如这个SQL语句:
select A.ID,A.Name FROM A WHERE A.ID WHERE A.ID IN (SELECT B.Father_ID FROM B WHERE B.ID=100)
其中B表的Father_ID是个外键,是对应A表的ID主键.
请问用Hibernate该如何写呢? 请教的是Hibernate该如何写,比如以下语句:
ICriteria criterA = NHibernateSession.CreateCriteria(typeof(A));
ICriteria criterB = NHibernateSession.CreateCriteria(typeof(B)); 具体该如何将criterA 和criterB 关连起来呢?
其中的对象该如何关连呢?
比如这个SQL语句:
select A.ID,A.Name FROM A WHERE A.ID WHERE A.ID IN (SELECT B.Father_ID FROM B WHERE B.ID=100)
其中B表的Father_ID是个外键,是对应A表的ID主键.
请问用Hibernate该如何写呢? 请教的是Hibernate该如何写,比如以下语句:
ICriteria criterA = NHibernateSession.CreateCriteria(typeof(A));
ICriteria criterB = NHibernateSession.CreateCriteria(typeof(B)); 具体该如何将criterA 和criterB 关连起来呢?
其中的对象该如何关连呢?
解决方案 »
- SQL的安装问题
- 字节流读取中文字符的问题
- 在Java中能否对enum类型进行随机取数(其内容)?若能则如何同时取多个随机数,怎么控制个数问题? 还有请教专家枚举类型运行时在内存中的分布!
- java.sql.SQLException: Invalid argument value: Duplicate entry 'name' for key 1是什么问题?
- 新手上路:有段代码调试不出来,请大虾帮忙找错(提示就1个错)
- 系统变量到底存在什么地方?
- oracle jdbc驱动的位置问题,请教
- 一个简单的对象申明和定义的问题
- 女汉纸求助算法设计与分析题
- 再问关于StringBuffer对象到InputStream或其子类对象的转化!急急急急急急急急急急!
- 100分求:java如何根据当天的日期,计算N个工作日后,日期是哪天?
- 有段代码不知道哪里错了,求指点!
是基于对象持久化的
1对1 多对1关联
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin 2.1 http://boss.bekk.no/boss/middlegen/
http://www.hibernate.org/
--><class
name="hibernatesample.Tuser1"
table="t_user1"
>
<id
name="id"
type="java.lang.Integer"
column="id"
>
<generator class="native" />
</id> <property
name="name"
type="java.lang.String"
column="name"
not-null="true"
length="45"
>
</property>
<property
name="age"
type="java.lang.Integer"
column="age"
length="10"
>
</property> <!-- Associations -->
<!-- bi-directional one-to-one association to Tpassport -->
<one-to-one
name="passport"
class="hibernatesample.Tpassport"
outer-join="true"
cascade="all"
constrained="true"
>
</one-to-one>
<!-- bi-directional many-to-one association to Tgroup -->
<!--<many-to-one
name="group"
class="hibernatesample.Tgroup"
not-null="true"
unique="true"
>
<column name="group_id" />
</many-to-one>--></class>
</hibernate-mapping>
建立A类,B类,A类中有B类的一个集合,B类有A类型的一个属性。
hql语句:
select c from B join B.a c where B.id=100
然后在配置文件里把这个属性写成many-to-one
在自动生成表
就可以了
User对象:id name Group
多个用户对应一个组的关系 User -----> Group(1)Group.hbm.xml<hibernate-mapping>
<class name="com.bjsxt.hibernate.Group" table="t_group">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
(2)User.hbm.xml<hibernate-mapping>
<class name="com.bjsxt.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<!--
<many-to-one name="group" column="groupid" cascade="all"/>
-->
<many-to-one name="group" column="groupid"/>
</class>
</hibernate-mapping>
SQL语句一般就不用写两个表关联这么麻烦了。