1
我是新的休眠。我想在書籍和作者之間創建多對多的連接,並在休眠狀態下在netbeans中創建。我看到的所有例子都是針對Eclipse的,而且我找不到我的問題的答案。 我Book.hbm.xml是:許多到很多休眠關係的中央表
<hibernate-mapping>
<class name="Book" table="books">
<id name="bookId" type="int" column="BookID">
<generator class="assigned"/>
</id>
<property name="isbn" column="Isbn" type="string"/>
<property name="title" column="Title" type="string"/>
<property name="bookPicPath" column="BookPicPath" type="string"/>
<property name="summary" column="Summary" type="string"/>
<property name="genry" column="Genry" type="string"/>
<property name="parentGenry" column="ParentGenry" type="string"/>
<set name="authors" table="Book_Author" cascade="all">
<key column="BookID" />
<many-to-many column="AuthorID" class="Author" />
</set>
</class>
</hibernate-mapping>
和Author.hbm.xml是:
<hibernate-mapping>
<class name="Author" table="authors">
<id name="authorId" type="int" column="AuthorID">
<generator class="assigned"/>
</id>
<property name="fname" column="Fname" type="string"/>
<property name="lname" column="Lname" type="string"/>
<property name="biography" column="Biography" type="string"/>
<property name="gender" column="Gender" type="string"/>
<property name="website" column="Website" type="string"/>
<property name="authorPicPath" column="AuthorPicPath" type="string"/>
</class>
</hibernate-mapping>
在主類,我創建表是這樣的:
HibernateUtil.droptable("drop table authors");
HibernateUtil.setup("create table authors (AuthorID int, Fname VARCHAR(20), Lname VARCHAR(20), Biography VARCHAR(255), Gender VARCHAR(20), Website VARCHAR(255), AuthorPicPath VARCHAR(255))");
HibernateUtil.droptable("drop table books");
HibernateUtil.setup("create table books (BookID int, Isbn VARCHAR(20), Title VARCHAR(255), BookPicPath VARCHAR(255), Summary VARCHAR(255), Genry VARCHAR(255), ParentGenry VARCHAR(255))");
我的問題:
1.in多對多關係有一個連接表(Book_Author)。現在我必須手動或h ibernate創建它自己的?
2.在主類,我有:
SessionFactory sessions = new Configuration().configure().buildSessionFactory();
Session session = sessions.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Set<Author> authors = new HashSet<Author>();
Author a1 = new Author("1","1","1","1","1","1");
Author a2 = new Author("2","2","2","2","2","2");
authors.add(a1);
authors.add(a2);
Book b1= new Book("a","a","a","a","a","a",authors);
session.save(b1);
tx.commit();
tx = null;
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
但是當我運行程序時,我看到了以下錯誤:
a different object with the same identifier value was already associated with the session: [Author#0]
請guide.thanks。