![]() |
#2
lgdcky2007-07-24 11:05
|
D是关系表 A , B, C他们之间的关系 都是靠D来维护的
我用HIBERNATE 可以写出 A B C的实体BEAN和配置文件 但不知道如何来写关系表D,有没有必要去写这张表的实体BEAN和配置文件呢!
请教!
![]() |
#2
lgdcky2007-07-24 11:05
如果不想偶合度过高,不写D表的实体映射也可以的,如果要写的话就写成3个一对多的关系!
|
![]() |
#3
亮剑2007-07-24 12:30
但是如果不写D表的实体映射。hibernate如何来维护它们几张表的关系呢
比如我想A表中插入数据 hibernate会自动在关系D表中插入相应的关系数据吗 我的四张表的关系是这样的: A表与B表是一对一的关系 B表与C表是一对多的关系(C中的多条记录对应B中的一条记录) 在数据库中通过D表体显出他们的关系。 |
![]() |
#4
lgdcky2007-07-24 14:00
给你一个一对多的例子给你参考参考!
Teachers.hbm.xml代码: <?xml version="1.0"?> <!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="manytomany.Teachers" table="teachers" catalog="test"> <id name="teacherid" type="java.lang.Integer"> <column name="teacherid" /> <generator class="assigned" /> </id> <property name="teachername" type="java.lang.String"> <column name="teachername" length="45" not-null="true" /> </property> <set name="students" inverse="true" table="tea_stu"> <key> <column name="teacherid" not-null="true" /> </key> <many-to-many class="manytomany.Students" column="studentid"></many-to-many> </set> </class> </hibernate-mapping> Students.hbm.xml代码: <?xml version="1.0"?> <!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="manytomany.Students" table="students" catalog="test"> <id name="studentid" type="java.lang.Integer"> <column name="studentid" /> <generator class="assigned" /> </id> <property name="studentname" type="java.lang.String"> <column name="studentname" length="45" not-null="true" /> </property> <set name="teachers" inverse="false" table="tea_stu" cascade="save-update"> <key> <column name="studentid" not-null="true" /> </key> <many-to-many class="manytomany.Teachers" column="teacherid"></many-to-many> </set> </class> </hibernate-mapping> |
![]() |
#5
lgdcky2007-07-24 14:01
Teacher实体类代码: import java.util.HashSet;
public class Teachers implements java.io.Serializable {
private Integer teacherid;
/** default constructor */ /** minimal constructor */ public Integer getTeacherid() { public String getTeachername() { public Set getStudents() { import java.util.HashSet;
public class Students implements java.io.Serializable {
private Integer studentid;
/** default constructor */ /** minimal constructor */ public Integer getStudentid() { public String getStudentname() { public Set getTeachers() { |
![]() |
#6
lgdcky2007-07-24 14:02
DAO类代码: import org.hibernate.Session; public class DAO { } import org.hibernate.HibernateException; /** /** private HibernateSessionFactory() { if (session == null || !session.isOpen()) { return session; /** /** if (session != null) { /** /** /** } import java.io.IOException; import javax.servlet.ServletException; public class InfoOperate extends HttpServlet { /** /** /** /** } |
![]() |
#7
野蛮女人2007-07-27 15:12
你这是多对多吧 朋友
[此贴子已经被作者于2007-7-27 15:12:38编辑过] |
![]() |
#8
亮剑2007-07-29 08:11
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly. Hibernate: select max(ID) from user org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.chen.pojo.User.droits at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104) at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337) at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200) at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3514) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:272) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519) at com.chen.dao.hibernate.UserDao.addUser(UserDao.java:33) at com.chen.dao.hibernate.test.UserTest.testAddUser(UserTest.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42) ... 34 more 我为什么抛这个异常! |