- 浏览: 60969 次
- 性别:
- 来自: tj
最新评论
-
06softwaregaojie:
原来是这样啊,多谢楼主。我还一直在找在触发器总遍历结果集的方 ...
oracle 触发器 删除表中的内容插入到另一张表 -
快乐让让:
好像没有写完吧。
LOG4J开发案例 -
clfsw0201:
真不错,挺全的,懒得看jxl的doc了,先拿来用。谢啦……
用jexcel读写excel的.xls文件的例子
oracle10
Myeclipse自动生成mapping
表events
序列EVENTIDSEQ
触发器Eventsinsert
表person
序列PERONIDSEQ
触发器PersonInsert
表person_event
Event.hbm.xml
Person.hbm.xml
PersonEvent.hbm.xml
Event.java
Person.java
PersonEvent.java
PersonEventId
Test.java
Myeclipse自动生成mapping
_____________ __________________ | | | | _____________ | EVENTS | | PERSON_EVENT | | | |_____________| |__________________| | PERSON | | | | | |_____________| | *EVENT_ID | <--> | *EVENT_ID | | | | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | | TITLE | |__________________| | AGE | |_____________| | FIRSTNAME | | LASTNAME | |_____________|
表events
create table events( event_id number primary key, event_date date, title varchar(10) )
序列EVENTIDSEQ
create sequence EVENTIDSEQ minvalue 1 maxvalue 9999999 start with 21 increment by 1 nocache;
触发器Eventsinsert
create or replace trigger Eventsinsert before insert on events for each row begin if :new.event_id is null then select eventidseq.nextval into :new.event_id from dual; end if; end
表person
create table person( person_id number primary key, age number(2), firstname varchar(10), lastname varchar(10) )
序列PERONIDSEQ
create sequence PERONIDSEQ minvalue 1 maxvalue 99999 start with 1 increment by 1 nocache;
触发器PersonInsert
create or replace trigger PersonInsert before insert on person for each row begin if :new.person_id is null then select eventidseq.nextval into :new.person_id from dual; end if; end;
表person_event
create table person_event( event_id number, person_id number ) alter table person_event add(constraint event_pk foreign key(event_id) references events(event_id)) alter table person_event add (constraint peron_pk foreign key(person_id) references person(person_id))
Event.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="Event" table="EVENTS" schema="TEST"> <id name="eventId" type="java.lang.Long"> <column name="EVENT_ID" precision="22" scale="0" /> <generator class="sequence"> <param name="sequence">EVENTIDSEQ</param> </generator> </id> <property name="eventDate" type="java.util.Date"> <column name="EVENT_DATE" length="7" /> </property> <property name="title" type="java.lang.String"> <column name="TITLE" length="10" /> </property> <set name="participants" table="PERSON_EVENT" inverse="true" cascade="save-update"> <key column="EVENT_ID"/> <many-to-many column="PERSON_ID" class="Person"/> </set> </class> </hibernate-mapping>
Person.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="Person" table="PERSON" schema="TEST"> <id name="personId" type="java.lang.Long"> <column name="PERSON_ID" precision="22" scale="0" /> <generator class="sequence"> <param name="sequence">PERONIDSEQ</param> </generator> </id> <property name="age" type="java.lang.Long"> <column name="AGE" precision="2" scale="0" /> </property> <property name="firstname" type="java.lang.String"> <column name="FIRSTNAME" length="10" /> </property> <property name="lastname" type="java.lang.String"> <column name="LASTNAME" length="10" /> </property> <set name="events" table="PERSON_EVENT" cascade="save-update" lazy="false"> <key column="PERSON_ID"/> <many-to-many column="EVENT_ID" class="Event"/> </set> </class> </hibernate-mapping>
PersonEvent.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="PersonEvent" table="PERSON_EVENT" schema="TEST"> <composite-id name="id" class="PersonEventId"> <key-many-to-one name="events" class="Event"> <column name="EVENT_ID" precision="22" scale="0" /> </key-many-to-one> <key-many-to-one name="person" class="Person"> <column name="PERSON_ID" precision="22" scale="0" /> </key-many-to-one> </composite-id> <many-to-one name="person" class="Person" insert="false" update="false"> <column name="PERSON_ID" precision="22" scale="0" /> </many-to-one> <many-to-one name="events" class="Event" insert="false" update="false"> <column name="EVENT_ID" precision="22" scale="0" /> </many-to-one> </class> </hibernate-mapping>
Event.java
// default package import java.util.Date; import java.util.HashSet; import java.util.Set; /** * Event generated by MyEclipse - Hibernate Tools */ public class Event implements java.io.Serializable { // Fields private Long eventId; private Date eventDate; private String title; private Set participants = new HashSet(); // Constructors public Set getParticipants() { return participants; } public void setParticipants(Set participants) { this.participants = participants; } /** default constructor */ public Event() { } /** full constructor */ public Event(Date eventDate, String title, Set personEvents) { this.eventDate = eventDate; this.title = title; } // Property accessors public Long getEventId() { return this.eventId; } public void setEventId(Long eventId) { this.eventId = eventId; } public Date getEventDate() { return this.eventDate; } public void setEventDate(Date eventDate) { this.eventDate = eventDate; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } }
Person.java
// default package import java.util.HashSet; import java.util.Set; /** * Person generated by MyEclipse - Hibernate Tools */ public class Person implements java.io.Serializable { // Fields private Long personId; private Long age; private String firstname; private String lastname; private Set events = new HashSet(0); /** default constructor */ public Person() { } /** full constructor */ public Person(Long age, String firstname, String lastname, Set personEvents) { this.age = age; this.firstname = firstname; this.lastname = lastname; this.events = personEvents; } // Property accessors public Long getPersonId() { return this.personId; } public void setPersonId(Long personId) { this.personId = personId; } public Long getAge() { return this.age; } public void setAge(Long age) { this.age = age; } public String getFirstname() { return this.firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return this.lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public Set getEvents() { return events; } public void setEvents(Set events) { this.events = events; } }
PersonEvent.java
// default package /** * personEvent generated by MyEclipse - Hibernate Tools */ public class PersonEvent implements java.io.Serializable { // Fields private PersonEventId id; private Person person; private Event events; // Constructors /** default constructor */ public PersonEvent() { } /** full constructor */ public PersonEvent(Person person, Event events) { this.person = person; this.events = events; } // Property accessors public PersonEventId getId() { return this.id; } public void setId(PersonEventId id) { this.id = id; } public Person getPerson() { return this.person; } public void setPerson(Person person) { this.person = person; } public Event getEvents() { return this.events; } public void setEvents(Event events) { this.events = events; } }
PersonEventId
// default package /** * personEventId generated by MyEclipse - Hibernate Tools */ public class PersonEventId implements java.io.Serializable { // Fields private Event events; private Person person; // Constructors /** default constructor */ public PersonEventId() { } /** full constructor */ public PersonEventId(Event events, Person person) { this.events = events; this.person = person; } // Property accessors public Event getEvents() { return this.events; } public void setEvents(Event events) { this.events = events; } public Person getPerson() { return this.person; } public void setPerson(Person person) { this.person = person; } public boolean equals(Object other) { if ( (this == other ) ) return true; if ( (other == null ) ) return false; if ( !(other instanceof PersonEventId) ) return false; PersonEventId castOther = ( PersonEventId ) other; return ( (this.getEvents()==castOther.getEvents()) || ( this.getEvents()!=null && castOther.getEvents()!=null && this.getEvents().equals(castOther.getEvents()) ) ) && ( (this.getPerson()==castOther.getPerson()) || ( this.getPerson()!=null && castOther.getPerson()!=null && this.getPerson().equals(castOther.getPerson()) ) ); } public int hashCode() { int result = 17; result = 37 * result + ( getEvents() == null ? 0 : this.getEvents().hashCode() ); result = 37 * result + ( getPerson() == null ? 0 : this.getPerson().hashCode() ); return result; } }
Test.java
import java.util.Date; import org.apache.log4j.Logger; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class Test { public static void main(String[] arg) { SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session session = sf.getCurrentSession(); session.beginTransaction(); Event event = new Event(); event.setEventDate(new Date()); Person person = new Person(); person.setFirstname("dddd"); person.getEvents().add(event); event.getParticipants().add(person); session.save(event); session.getTransaction().commit(); } }
Hibernate: select EVENTIDSEQ.nextval from dual Hibernate: select PERONIDSEQ.nextval from dual Hibernate: insert into TEST.EVENTS (EVENT_DATE, TITLE, EVENT_ID) values (?, ?, ?) Hibernate: insert into TEST.PERSON (AGE, FIRSTNAME, LASTNAME, PERSON_ID) values (?, ?, ?, ?) Hibernate: insert into PERSON_EVENT (PERSON_ID, EVENT_ID) values (?, ?)
相关推荐
hibernate多对多关系映射案例,配有对应的jar包。
Hibernate多对多关联添加及查询示例
Hibernate多对多
NULL 博文链接:https://1028826685.iteye.com/blog/1536060
NULL 博文链接:https://gaoquanyang.iteye.com/blog/1213765
hibernate关联映射注解多对多单向关联、
Hibernate多对多案例笔记Hibernate多对多案例笔记Hibernate多对多案例笔记Hibernate多对多案例笔记
Hibernate多对多关联关系demo
hibernate 多对多 映射 翻转 hibernate多对多关系项目 自己做的hibernate项目 上传上来和大家分享
自已写的学生对课程多对多关系的简单实现,供大家参考.
hibernate多对多的关系实例hibernate多对多的关系实例hibernate多对多的关系实例
Hibernate多对多映射实例,里面包含源程序,测试程序,映射说明
hibernate多对多实例
这个例子会让你很快明白hibernate多对多的原理以及所涉及的程序源码,相信你会有很大的感触!
博文链接:https://llying.iteye.com/blog/220812
Hibernate多对多关系
JavaEE Hibernate多对多简单示例