В моем проекте я использую PostgreSQL и Hibernate для соединения с моим ZUL и всем этим шумом.Соединение, которое я пытаюсь установить, - это способ пользователя Facebook, идентификатор которого появляется в нескольких сообщениях и комментариях.Это требует заключения сделок OneToMany и ManyToOne.Я впервые делаю такого рода соединения в ZK и Hibernate, и я был бы признателен, если бы мне указали, где я ошибаюсь.
Вот ошибки, которые появляются несколько раз:
Caused by: org.zkoss.zel.ELException: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Grave: org.zkoss.zk.ui.UiException: org.hibernate.LazyInitializationException: could not initialize proxy - no Session at [file:/C:/Users/Frank/Documents/Work/Fakebook_v3/build/web/index.zul, line:42]
Grave: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: pojos.Post.comments, could not initialize proxy - no Session
И вот java-файлы Post, Comment и FBUser:
@Entity
@Table(name = "post")
@org.hibernate.annotations.Entity(dynamicUpdate = true)
public class Post implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "postid", updatable = false, nullable = false)
private int postid;
@Column(name = "fbuser")
private Fbuser fbuser;
@Column(name = "info")
private String info;
@Column(name = "plikes")
private int plikes;
@Column(name = "comments")
@OneToMany(fetch = FetchType.EAGER, mappedBy = "post", cascade = CascadeType.ALL)
private Collection<Comment> comments = new LinkedHashSet<Comment>();
//getters, setters and other tools
@Entity
@Table(name = "comment")
@org.hibernate.annotations.Entity(dynamicUpdate = true)
public class Comment implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "commentid", updatable = false, nullable = false)
private int commentid;
@Column(name = "fbuser")
private Fbuser fbuser;
@Column(name = "post")
@ManyToOne
@JoinColumn(name="post", nullable=false)
private Post post;
@Column(name = "info")
private String info;
@Column(name = "clikes")
private int clikes;
//getters, setters and other tools
@Entity
@Table(name = "fbuser")
@org.hibernate.annotations.Entity(dynamicUpdate = true)
public class Fbuser implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "fbuserid", updatable = false, nullable = false)
private int fbuserid;
@Column(name = "name")
private String name;
@Column(name = "comments")
@OneToMany(fetch = FetchType.EAGER, mappedBy = "fbuser", cascade = CascadeType.ALL)
private Set<Comment> comments = new HashSet<Comment>(0);
@Column(name = "posts")
@OneToMany(fetch = FetchType.EAGER, mappedBy = "fbuser", cascade = CascadeType.ALL)
private Collection<Post> posts = new LinkedHashSet<Post>();
//getters, setters and other tools
И мой коннектор с Hibernate в основном этот код несколько разс разными именами таблиц и ID:
public List<Post> getPosts() throws Exception {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
String toDo = "FROM Post ORDER BY postid DESC";
List<Post> posts = session.createQuery(toDo).list();
session.getTransaction().commit();
session.close();
return posts;
}
Любая помощь приветствуется!