该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-01-13
totoblue 兄,您要把您的代码列出来,大家才可以看看问题出现在那里阿。
|
|
返回顶楼 | |
发表时间:2004-01-14
谢谢关心,翻看了以前的文章,我把问题已经解决。
不能更新的原因在于没有加 cascade 对于one to many 有问题的朋友,可以去翻翻前面的文章。 |
|
返回顶楼 | |
发表时间:2004-01-14
为什么我在Author.java里面加上
private Set publications = new HashSet(); 就开始报错误了? |
|
返回顶楼 | |
发表时间:2004-01-15
不知道您出现什么问题,您有没有在Author.java import java.util.*呢?
|
|
返回顶楼 | |
发表时间:2004-03-10
好例子 多谢smallduzi.
但是我运行例子的时候发现如果用SchemaExport来生成数据库的表的时候会有错误, 主要的原因是由于Publication表的authorid字段变成了varchar(255)的. 导致外键添加不成功. 不知道各位有没有碰到这样的问题. 解决方法是在author的描述xml里面的id element里加入length="40" 这东西. 但是这样解决并不好. 因为这样的话 如果修改了person就必须同时修改author 好麻烦 不知道该怎么解决 还是只有SQL2K才有这样的问题?? |
|
返回顶楼 | |
发表时间:2004-04-06
感谢smallduzi兄,给新人这么多帮助,可否将one-to-many的代码发我看看吗?flyfox2008@hotmail.com,谢谢了.
我总出异常 ,试了好多遍,我用的是hibernate.cfg.xml不是属性文件,应该不是这个问题吧.......前几个例子都成功了. Hibernate: insert into person (name, email, id) values (?, ?, ?) Hibernate: insert into author (alias, id) values (?, ?) Hibernate: insert into publication (bookname, datatime, authorid, id) values (?, ?, ?, ?) net.sf.hibernate.JDBCException: Could not execute JDBC batch update at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:125) at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2311) at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2261) at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2187) at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61) at com.javamodel.hibernate.Example.main(Example.java:63) Caused by: java.sql.BatchUpdateException: ORA-00904: ???????? at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:441) at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:3377) at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54) at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:118) ... 5 more Exception in thread "main" |
|
返回顶楼 | |
发表时间:2004-04-06
http://forum.iteye.com/viewtopic.php?t=2991
不好意思,这是我很早以前做的例子,测试不一定能通过。抱歉了。 |
|
返回顶楼 | |
发表时间:2004-04-07
如果在Publication表里面,
如果id和AuthorId都是主键怎么解决, 也就是双主键,而且authorid还要做外键, hbm.xml都该怎样写. smallduzi请帮忙解决 |
|
返回顶楼 | |
发表时间:2004-04-30
我想将以前用JDBC写的东西移植到Hibernate上来,但是在处理一个一对多关系的时候出现问题。
Category类,表示一个类别,类似于目录。系统中只有一个跟类别,然后是子类别。 package test; public class Category { /*<------------------------------------------------------// CONSTANTs //----->*/ public static final Category ROOT = new Category("ROOT");; /*<---------------------------------------------------------// FIELDs //----->*/ private long id; private String name; private String desc; private Category parent; /*<---------------------------------------------------// CONSTRUCTORs //----->*/ public Category(); { /* do nothing */ } public Category(String name); { setName(name);; } public Category(String name, Category parent); { this(name);; setParent(parent);; } /*<-----------------------------------------------------// PROPERTIES //----->*/ public long getId(); { return id;} private void setId(long id); { this.id = id; } public String getName(); { return name; } public void setName(String name); { this.name = name;} public String getDesc(); { return desc;} public void setDesc(String desc); { this.desc = desc; } public Category getParent(); { return parent; } public void setParent(Category parent); { this.parent = parent; } } 我是这样映射的: <class name="test.Category" table="CATEGORY"> <id name="id" column="CATEGORY_ID" type="long"> <generator class="hilo"/> </id> <property name="name" type="string" not-null="true"/> <property name="desc" column="DESCRIPTION" type="string"/> <many-to-one name="parent" column="PARENT_ID" insert="false" update="false"/> </class> 但是在向根类别中添加一个新的类别时遇到问题,因为我无法指出根类别是谁,因为它根本不存在。请问这样的问题在Hibernate中如何解决? |
|
返回顶楼 | |
发表时间:2004-05-12
按照smallduzi的例子,程序毫无问题。但自己在调试的时候,根据实际情况作了一些修改,发生以下这个问题,不知道有谁能提供解决的方式!
如果有2个表 表名 主键 其他字段 对应的类 T1 t1_pk ...... classT1 T2 t2_pk t1_pk ....... classT2 2个表各自有主键,表T2有外键指向t1。 classT1 t1 = new classT1(); ... classT2 t2 = new classT2(); ..... t2.setLocation(t1); t1.getArea().add(t2); 这个时候进行保存 tx = session.beginTransaction(); session.save(t1); --- 根据文档,此时只要保存t1,会自动保存t2 tx.commit(); session.close(); 在进行commit的时候发生错误! 通过打开hibernate的sql输出,发现 t1保存采用insert的方式 而t2的保存采用了update方式, (而采用smallduzi的例子,这2个实例的保存都是采用insert方法保存的) 现在只能用最笨的方式处理: 先保存t1,在保存t2,将2者关联起来后再次保存t1. 在hibernate内部是怎么做得?如果碰到了这种问题该如何处理? hibernate应该能够解决这类问题的吧。 |
|
返回顶楼 | |