2007-09-12
超经典的主外键表的连接(添加和更新)
数据库 代码
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类
- package com.david.po;
- import java.util.Date;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * Emp generated by MyEclipse Persistence Tools
- */
- public class Emp implements java.io.Serializable {
- // Fields
- private Integer eid;
- private Dep dep;
- private String ename;
- private String sex;
- private String address;
- private Date borthday;
- private Set emploves = new HashSet(0);
- // Constructors
- /** default constructor */
- public Emp() {
- }
- /** minimal constructor */
- public Emp(Dep dep) {
- this.dep = dep;
- }
- /** full constructor */
- public Emp(Dep dep, String ename, String sex, String address,
- Date borthday, Set emploves) {
- this.dep = dep;
- this.ename = ename;
- this.sex = sex;
- this.address = address;
- this.borthday = borthday;
- this.emploves = emploves;
- }
- // Property accessors
- public Integer getEid() {
- return this.eid;
- }
- public void setEid(Integer eid) {
- this.eid = eid;
- }
- public Dep getDep() {
- return this.dep;
- }
- public void setDep(Dep dep) {
- this.dep = dep;
- }
- public String getEname() {
- return this.ename;
- }
- public void setEname(String ename) {
- this.ename = ename;
- }
- public String getSex() {
- return this.sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public String getAddress() {
- return this.address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public Date getBorthday() {
- return this.borthday;
- }
- public void setBorthday(Date borthday) {
- this.borthday = borthday;
- }
- public Set getEmploves() {
- return this.emploves;
- }
- public void setEmploves(Set emploves) {
- this.emploves = emploves;
- }
- }
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 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- 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) {
- // TODO Auto-generated catch block
- 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 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- 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) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- emp.setDep(depdao.findById(2));
- Set emplove=emp.getEmploves();
- Object [] ob=emplove.toArray();
- //String [] loveid2={"42","43","44","45"};
- 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);
- }
- }
评论
56553655
2007-09-17
我正在找这个东西,太感谢了,使用的时候就遇到主外键约束出问题。
我的*.hbm.xml是采用middle-gen2.1自动生成的,因为本身我对Hibernate也不是很熟,所以出了问题也不知道是怎么。
问了一下网上的朋友,我这主个键关朕,刚开始还真不好解决,先谢
我的*.hbm.xml是采用middle-gen2.1自动生成的,因为本身我对Hibernate也不是很熟,所以出了问题也不知道是怎么。
问了一下网上的朋友,我这主个键关朕,刚开始还真不好解决,先谢
56553655
2007-09-17
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);
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);
laowang_27@hotmail.com
2007-09-13
想你是西安的吧
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 11611 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最新评论
-
MyEclipse WebSphere 6.1 ...
呵呵..谢谢..
-- by xiecailian -
[转载]与大学生谈软件外 ...
算不错的文章。不过咱们国内可有不少痴迷于高新软件技术的。让他们从框的死死的地方做 ...
-- by 魔力猫咪 -
超经典的主外键表的连接( ...
我正在找这个东西,太感谢了,使用的时候就遇到主外键约束出问题。 我的*.hbm. ...
-- by 56553655 -
超经典的主外键表的连接( ...
MySQL数据库版: create table dep(depid int au ...
-- by 56553655 -
超经典的主外键表的连接( ...
想你是西安的吧
-- by laowang_27@hotmail.com






评论排行榜