- dmewy
- 等级: 初级会员

- 性别:

- 文章: 59
- 积分: 20
- 来自: 上海

|
数据库 代码
dep 部门表 love 爱好表 emp 员工表 emplove员工爱好表
- create table dep(
- depid int identity primary key,
- depname varchar(50)
- )
-
- insert into dep values('技术部')
- insert into dep values('市场部')
- insert into dep values('人事部')
- insert into dep values('财务部')
-
- create table emp(
- eid int identity primary key,
- ename varchar(50),
- sex varchar(10),
- address varchar(100),
- depid int not null,
- borthday datetime
- )
-
- create table love(
- lid int identity primary key,
- lname varchar(50)
- )
-
- insert into love values('看书')
- insert into love values('游戏')
- insert into love values('标准舞')
- insert into love values('游泳')
-
- create table emplove(
- elid int identity primary key,
- eid int not null,
- lid int not null
- )
-
- alter table emp add constraint fk_depid foreign key (depid)
- references dep(depid)
-
- alter table emplove add constraint fk_eid foreign key (eid)
- references emp(eid)
-
- alter table emplove add constraint fk_lid foreign key (lid)
- references love(lid)
-
- select * from love
- select * from dep
- select * from emp
- select * from emplove
po包中自动生成的emp表对应的POJO类
po包中自动生成的emp表对应的hibernate映射文件(做了级联)
- xml version="1.0" encoding="utf-8"?>
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
- <hibernate-mapping>
- <class name="com.david.po.Emp" table="emp" schema="dbo" catalog="mytest">
- <id name="eid" type="java.lang.Integer">
- <column name="eid" />
- <generator class="native" />
- id>
- <many-to-one name="dep" class="com.david.po.Dep" fetch="select">
- <column name="depid" not-null="true" />
- many-to-one>
- <property name="ename" type="java.lang.String">
- <column name="ename" length="50" />
- property>
- <property name="sex" type="java.lang.String">
- <column name="sex" length="10" />
- property>
- <property name="address" type="java.lang.String">
- <column name="address" length="100" />
- property>
- <property name="borthday" type="java.util.Date">
- <column name="borthday" length="23" />
- property>
- <set name="emploves" inverse="true" cascade="all">
- <key>
- <column name="eid" not-null="true" />
- key>
- <one-to-many class="com.david.po.Emplove" />
- set>
- class>
- hibernate-mapping>
test包下添加员工TestAddEmp类.(因为有了级联,所以在添加员工表的时候同时向员工爱好表添加了数据,并牵扯到部门表和爱好表)
- package com.david.test;
- import java.text.ParseException;
-
- import com.david.po.*;
- import com.david.myhibernate.*;
-
- public class TestAddEmp {
-
-
-
-
- public static void main(String[] args) {
-
- EmpDAO empdao= new EmpDAO();
- DepDAO depdao=new DepDAO();
- LoveDAO lovedao= new LoveDAO();
- EmploveDAO eldao = new EmploveDAO();
- Emp emp=new Emp();
-
- emp.setEname("最终版本");
- emp.setAddress("小寨");
- try {
- emp.setBorthday(java.text.DateFormat.getDateInstance().parse("1985-2-2"));
- } catch (ParseException e) {
-
- e.printStackTrace();
- }
- emp.setSex("男");
- emp.setDep(depdao.findById(1));
-
- String [] loveid={"1","2","3","4"};
- for (int i = 0; i < loveid.length; i++) {
- Emplove emplove= new Emplove();
- Love love=lovedao.findById(Integer.parseInt(loveid[i]));
- emplove.setEmp(emp);
- emplove.setLove(love);
- emp.getEmploves().add(emplove);
- }
- empdao.save(emp);
-
-
- }
-
- }
test包下修改员工表UpdateEmp类,和增加员工唯一不同的地方是需要按照id来查找员工,并且把员工之前添加的员工爱好表中的数据取出来并删除它.然后重新添加数据.
- package com.david.test;
- import java.text.ParseException;
-
- import com.david.po.*;
- import com.david.myhibernate.*;
- import java.util.*;
-
- public class UpdateEmp {
-
-
-
-
- public static void main(String[] args) {
-
- EmpDAO empdao= new EmpDAO();
- LoveDAO lovedao= new LoveDAO();
- DepDAO depdao= new DepDAO();
- EmploveDAO eldao= new EmploveDAO();
- Emp emp= empdao.findById(12);
- emp.setEname("傻瓜");
- emp.setSex("男");
- emp.setAddress("焦作");
- try {
- emp.setBorthday(java.text.DateFormat.getDateInstance().parse("2007-9-4"));
- } catch (ParseException e) {
-
- e.printStackTrace();
- }
- emp.setDep(depdao.findById(2));
-
- Set emplove=emp.getEmploves();
- Object [] ob=emplove.toArray();
-
- for (int j = 0; j < ob.length; j++) {
- Emplove el=(Emplove) ob[j];
-
- eldao.delete(el);
-
- }
-
-
- String [] loveid={"3","4"};
- for (int i = 0; i < loveid.length; i++) {
- Emplove emplove2= new Emplove();
- emplove2.setEmp(emp);
- Love love=lovedao.findById(Integer.parseInt(loveid[i]));
- emplove2.setLove(love);
- emp.getEmploves().add(emplove2);
- }
-
- empdao.attachDirty(emp);
-
-
-
- }
-
- }
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- laowang_27@hotmail.com
- 等级: 初级会员

- 性别:

- 文章: 9
- 积分: 0
- 来自: 西安

|
想你是西安的吧
|
| 返回顶楼 |
|
|
- 56553655
- 等级: 初级会员

- 性别:

- 文章: 2
- 积分: 0
- 来自: 深圳

|
MySQL数据库版:
create table dep(depid int auto_increment primary key,depname varchar(50));
insert into dep(depname) values('技术部');
insert into dep(depname) values('市场部');
insert into dep(depname) values('人事部');
insert into dep(depname) values('财务部');
create table emp(
eid int auto_increment primary key,
ename varchar(50),
sex varchar(10),
address varchar(100),
depid int not null,
borthday datetime
);
create table love(
lid int auto_increment primary key,
lname varchar(50)
);
insert into love(lname) values('看书');
insert into love(lname) values('游戏');
insert into love(lname) values('标准舞');
insert into love(lname) values('游泳');
create table emplove(
elid int auto_increment primary key,
eid int not null,
lid int not null
);
alter table emp add foreign key (depid) references dep(depid);
alter table emplove add foreign key (eid) references emp(eid);
alter table emplove add foreign key (lid) references love(lid);
|
| 返回顶楼 |
|
|
- 56553655
- 等级: 初级会员

- 性别:

- 文章: 2
- 积分: 0
- 来自: 深圳

|
我正在找这个东西,太感谢了,使用的时候就遇到主外键约束出问题。
我的*.hbm.xml是采用middle-gen2.1自动生成的,因为本身我对Hibernate也不是很熟,所以出了问题也不知道是怎么。
问了一下网上的朋友,我这主个键关朕,刚开始还真不好解决,先谢
|
| 返回顶楼 |
|
|