我正在做一對多的映射沒有成功。我的模式是如下休眠一對多
事件(一個)---->消息(多)
在事件文件的獲取/設置信息功能:
@Entity
@Table(name = "event", schema = "public")
@SuppressWarnings("serial")
public class Event implements java.io.Serializable {
...
....
@OneToMany(fetch = FetchType.LAZY, mappedBy = "event")
public Set<Message> getMessages() {
return this.messages;
}
public void setMessages(Set<Message> messages) {
this.messages = messages;
}
}
了get/set消息功能消息文件:
@Entity
@Table(name = "message", schema = "public")
@SuppressWarnings("serial")
public class Message implements java.io.Serializable {
...
....
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "event_id", nullable = false)
public Event getEvent() {
return this.event;
}
public void setEvent(Event event) {
this.event = event;
}
}
而Hibernate配置文件:
...
<mapping class="org.itri.ccma.paas.hibernate.Event" />
<mapping class="org.itri.ccma.paas.hibernate.Message" />
執行以下BoEvent.java
...
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Event event = new Event();
session.save(event);
Set<Message> Messagess = new HashSet<Message>();
Message testMessage = new Message();
testMessage.setEvent(event);
event.getMessages().add(testMessage);
session.save(event);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
session.close();
}
後有一個在我的留言表中沒有記錄,但事件表是確定。 我想我在代碼中丟失了一些東西
有什麼建議嗎?
您的課堂是否註釋爲@實體?你註釋過你的類是「@Access(AccessType.PROPERTY)'嗎? – SWiggels
我想我已經將我的課程註釋爲@Entity。 –
但是我應該在哪裏放置@access,事件或消息或兩者兼而有之? –