我正在使用 DB2 数据库和休眠框架。有两个表,例如 Word 和 Litter,它们的关系是一对多的。
模式 A:
Table Word: ID, IDLIT -> references to ID of Litter table Name
模式 B:
Table Litter ID, Short_Name, Long_Name.
这两个表都位于两个不同的模式中,但位于一个数据库中。我有一个 POJO 和 XML 映射文件来映射表。现在如何在处理多对一关系(Litter - Word)时将对象保存到数据库中?有什么建议吗?如果是,请给我详细的说明,在此先感谢!
更新的问题
我也改变了,因为我的映射 xml 文件对于每个 POJO 类都不同。下面是运行代码:
Session session = HibernateUtility.getSessionFactory().openSession();
session.beginTransaction();
Word word = new Word();
Word word1 =new Word();
Litter litter = new Litter();
litter.setFullname("bla bla");
word.setLitter(litter);
word1.setLitter(litter); //Here I have to handle one to many relationship
Set Words =new HashSet();
Words.add(word);
Words.add(word1);
litter.setWords(words);
session.save(litter);
session.save(word);
session.save(word1);
session.getTransaction().commit();
session.close();
但是这段代码给出了一个异常: JDBCExceptionReporter logExceptions 我使用的方法是正确的吗?
堆栈跟踪 - - - - - - - - - 信息:架构更新完成 休眠:从 LITTER 中选择 max(ID) 2012 年 2 月 25 日下午 7:33:42 org.hibernate.util.JDBCExceptionReporter logExceptions 警告:SQL 错误:-204,SQLState:42704 2012 年 2 月 25 日下午 7:33:42 org.hibernate.util.JDBCExceptionReporter logExceptions 严重:DB2 SQL 错误:SQLCODE=-204,SQLSTATE=42704,SQLERRMC=BIMASH.LITTER,驱动程序=3.64.104 2012 年 2 月 25 日下午 7:33:42 org.hibernate.util.JDBCExceptionReporter logExceptions 警告:SQL 错误:-204,SQLState:42704 2012 年 2 月 25 日下午 7:33:42 org.hibernate.util.JDBCExceptionReporter logExceptions 严重:DB2 SQL 错误:SQLCODE=-204,SQLSTATE=42704,SQLERRMC=BIMASH.LITTER,驱动程序=3.64.104 2012 年 2 月 25 日下午 7:33:42 org.hibernate.util.JDBCExceptionReporter logExceptions 警告:SQL 错误:-727,SQLState:56098 2012 年 2 月 25 日下午 7:33:42 org.hibernate.util.JDBCExceptionReporter logExceptions 严重:DB2 SQL 错误:SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;BIMASH.LITTER, DRIVER=3.64.104 线程“主”org.hibernate.exception.SQLGrammarException 中的异常:无法获取增量生成器的初始值 在 org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) 在 org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 在 org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:107) 在 org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:44) 在 org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99) 在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) 在 org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) 在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) 在 org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) 在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) 在 org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535) 在 org.hibernate.impl.SessionImpl.save(SessionImpl.java:523) 在 org.hibernate.impl.SessionImpl.save(SessionImpl.java:519) 在 Main.main(Main.java:73)