Hibernate进行一对多操作
来源:互联网 发布:sql 修改数据库sysdate 编辑:程序博客网 时间:2024/05/16 12:32
Hibernate配置一对多关系对像操作;
类1:
public class HouseOwner {
private Long id;
private String familyOwner;
private String familyNo;
private String familyTel;
private Long totalFee;
private Long availableFee;
private Set<MailName> mailNameList;
}
其中一个成员为mailNameList Set,这里有一对多关系;
类2:
private String familyNo;
}
需要定义两个映射关系:
<class name="HouseOwner" table="house_owner"
dynamic-insert="true" dynamic-update="true" lazy="false">
<id name="id" type="long">
<generator class="native"/>
</id>
<property name="familyOwner" type="string" not-null="true" unique="true"></property>
<property name="familyNo" type="string" not-null="true" ></property>
<property name="familyTel" type="string" not-null="true" ></property>
<property name="totalFee" type="long" ></property>
<property name="availableFee" type="long" ></property>
<set name="mailNameList" cascade="all-delete-orphan"
lazy="false">
<key>
<column name="child_id"/>
</key>
<one-to-many class="MailName" />
</set>
</class>
<class name="MailName"
table="mail_name" lazy="false" dynamic-insert="true" dynamic-update="true">
<id name="id" type="long">
<generator class="native"/>
</id>
<property name="mailName" type="string" ></property>
<property name="familyNo" type="string" ></property>
</class>
关键问题是建表,需要指定一个外键关系,外键即是一个引用,在java对象和对应的XML映射文件里没有定义,而是在引用对象那个类里定义的
这里即是需要在HouseOwner的关系里定义,仔细理解一下这是符合逻辑的。
建表SQL:
1、HouseOwner类的表:CREATE TABLE house_owner (id BIGINT NOT NULL AUTO_INCREMENT, familyOwner VARCHAR(255) NOT NULL,familyNo VARCHAR(255) NOT NULL,familyTel VARCHAR(255) NOT NULL, totalFee BIGINT NOT NULL, availableFee BIGINT NOT NULL,PRIMARY KEY (id));
2、MailName的表:
CREATE TABLE `mail_name` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`child_id` BIGINT,
`mailName` VARCHAR(255) DEFAULT NULL,
`familyNo` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`child_id`) REFERENCES house_owner (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
);
如此便可以进行一个对象的操作,这样一个对象的数据用多个表来存而做业务时完全不关心怎么去存,比较方便。
每个表的主键ID设置为自增模式,而且这个字段不负责业务表示,纯粹用于数据库管理。
类1:
public class HouseOwner {
private Long id;
private String familyOwner;
private String familyNo;
private String familyTel;
private Long totalFee;
private Long availableFee;
private Set<MailName> mailNameList;
}
其中一个成员为mailNameList Set,这里有一对多关系;
类2:
public class MailName {
private long id;
private String mailName;private String familyNo;
}
需要定义两个映射关系:
<class name="HouseOwner" table="house_owner"
dynamic-insert="true" dynamic-update="true" lazy="false">
<id name="id" type="long">
<generator class="native"/>
</id>
<property name="familyOwner" type="string" not-null="true" unique="true"></property>
<property name="familyNo" type="string" not-null="true" ></property>
<property name="familyTel" type="string" not-null="true" ></property>
<property name="totalFee" type="long" ></property>
<property name="availableFee" type="long" ></property>
<set name="mailNameList" cascade="all-delete-orphan"
lazy="false">
<key>
<column name="child_id"/>
</key>
<one-to-many class="MailName" />
</set>
</class>
<class name="MailName"
table="mail_name" lazy="false" dynamic-insert="true" dynamic-update="true">
<id name="id" type="long">
<generator class="native"/>
</id>
<property name="mailName" type="string" ></property>
<property name="familyNo" type="string" ></property>
</class>
关键问题是建表,需要指定一个外键关系,外键即是一个引用,在java对象和对应的XML映射文件里没有定义,而是在引用对象那个类里定义的
这里即是需要在HouseOwner的关系里定义,仔细理解一下这是符合逻辑的。
建表SQL:
1、HouseOwner类的表:CREATE TABLE house_owner (id BIGINT NOT NULL AUTO_INCREMENT, familyOwner VARCHAR(255) NOT NULL,familyNo VARCHAR(255) NOT NULL,familyTel VARCHAR(255) NOT NULL, totalFee BIGINT NOT NULL, availableFee BIGINT NOT NULL,PRIMARY KEY (id));
2、MailName的表:
CREATE TABLE `mail_name` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`child_id` BIGINT,
`mailName` VARCHAR(255) DEFAULT NULL,
`familyNo` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`child_id`) REFERENCES house_owner (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
);
如此便可以进行一个对象的操作,这样一个对象的数据用多个表来存而做业务时完全不关心怎么去存,比较方便。
- Hibernate进行一对多操作
- Hibernate一对多操作
- Hibernate 一对多双向操作
- Hibernate一对多关联操作
- Hibernate的一对多操作
- 【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
- Hibernate一对多,多对多操作
- Hibernate一对多双向级联操作
- 使用Hibernate操作一对多关系
- hibernate 一对多表配置及操作
- Hibernate一对多和多不多的操作
- 使用MyEclipse进行hibernate的基本配置实现一对多
- Hibernate一对多级联操作
- Hibernate一对多级联操作
- Hibernate一对多级联操作
- hibernate一对多 操作(增,删,改,查)
- 关于hibernate一对多关系的对象操作
- hibernate中hbm的级联操作(一对多)
- 关于UNIX环境高级编程8-8:execl error:permission denied 的纠错
- 不可重复读和幻读的有什么区别,感觉非常类似阿
- ADB 常用命令整理
- hadoop集群配置实例
- 安卓反编译揭秘(爱加密系列教程二)
- Hibernate进行一对多操作
- 调试杂记
- Linux环境进程间通信: 共享内存
- 安卓反编译揭秘(爱加密系列教程三)
- UIButton学习笔记
- ShareSdk(IOS)使用心得
- Java数据结构--------堆栈和队列
- linux shell中的条件判断语句
- 行政能力测试中折叠题型总结