我正在尝试检索并打印事件的所有参与者(对于给定的 eventId),但运行代码后参与者集为空。这是我的 Class 和 HBM 文件。
班级人:
public class Person {
private long personId;
private String firstName;
private String lastName;
private int age;
private Set<Event> myEvents=new HashSet<Event>();
public Person() {
}
/**
* @return the personId
*/
public long getPersonId() {
return personId;
}
/**
* @param personId the personId to set
*/
public void setPersonId(long personId) {
this.personId = personId;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the myEvents
*/
public Set getMyEvents() {
return myEvents;
}
/**
* @param myEvents the myEvents to set
*/
public void setMyEvents(Set myEvents) {
this.myEvents = myEvents;
}
}
HBM
<hibernate-mapping package="com.lc.learn.hibernate.sample.beans">
<class name="Person" table="person">
<id name="personId" column="person_id" type="long">
<generator class="increment"/>
</id>
<property name="firstName" column="first_name" type="string"/>
<property name="lastName" column="last_name" type="string"/>
<property name="age" column="age" type="integer"/>
<set name="myEvents" table="person_events" inverse="false" lazy="false" fetch="select" cascade="all">
<key column="personId"/>
<many-to-many column="eventId" class="Event"/>
</set>
</class>
</hibernate-mapping>
事件类
public class Event {
private long eventId;
private String eventTitle;
private Date eventDate;
private Set<Person> personList=new HashSet<Person>();
public Event() {
}
public Event(String eventTitle, Date eventDate) {
this.eventTitle = eventTitle;
this.eventDate = eventDate;
}
/**
* @return the eventId
*/
public long getEventId() {
return eventId;
}
/**
* @param eventId the eventId to set
*/
public void setEventId(long eventId) {
this.eventId = eventId;
}
/**
* @return the eventTitle
*/
public String getEventTitle() {
return eventTitle;
}
/**
* @param eventTitle the eventTitle to set
*/
public void setEventTitle(String eventTitle) {
this.eventTitle = eventTitle;
}
/**
* @return the eventDate
*/
public Date getEventDate() {
return eventDate;
}
/**
* @param eventDate the eventDate to set
*/
public void setEventDate(Date eventDate) {
this.eventDate = eventDate;
}
/**
* @return the personList
*/
public Set getPersonList() {
return personList;
}
/**
* @param personList the personList to set
*/
public void setPersonList(Set personList) {
this.personList = personList;
}
}
HBM :
<hibernate-mapping package="com.lc.learn.hibernate.sample.beans">
<class name="Event" table="event">
<id name="eventId" column="event_id" type="long">
<generator class="increment"/>
</id>
<property name="eventTitle" column="event_title" type="string"/>
<property name="eventDate" column="event_date" type="timestamp"/>
<set name="personList" table="person_events" inverse="true" lazy="false" fetch="select">
<key column="event_id"/>
<many-to-many column="person_id" class="Person"/>
</set>
</class>
</hibernate-mapping>
达尔:
public class EventManager {
public Event getEventById(long eventId){
Event eObj=null;
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx=session.getTransaction();
tx.begin();
eObj=(Event)session.get(Event.class, eventId);
eObj.setPersonList(eObj.getPersonList());
//Hibernate.initialize(eObj.getPersonList());
tx.commit();
return eObj;
}
}
主类:
public class MyHibernateSample {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
EventManager eManager=new EventManager();
Event eObj= eManager.getEventById(1);
Iterator it=eObj.getPersonList().iterator();
while(it.hasNext()){
Person pObj=(Person)it.next();
System.out.println("First Name : "+pObj.getFirstName()+" Last Name : "+pObj.getLastName()+" Age : "+pObj.getAge());
}
}
}
任何人请帮我解决这个问题。谢谢李