Hibernate: get entity by id
hibernate, java
Solution
use `get` instead of `load`
// ...
try {
session = HibernateUtil.getSessionFactory().openSession();
user = (User) session.get(User.class, user_id);
} catch (Exception e) {
// ...
Problem
I have user entity and trying to get it from base by id. The entity definition is below. ``` package com.hibernate.logic; import java.io.Serializable; import java.util.Random; import javax.persistence.*; @Entity @Table(name="users") public class User implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name="user_id") private Long userId; @Column(name="middlename") private String middlename; @Column(name="name") private String name; @Column(name="surname") private String surname; @Column(name="pass") private String pass; //bi-directional many-to-one association to Role @ManyToOne @JoinColumn(name="role_id") private Role role; public User() { Random random = new Random(); this.userId = random.nextLong(); this.name = ""; this.surname = ""; this.middlename = ""; } public Long getUserId() { return this.userId; } public void setUserId(Long userId) { this.userId = userId; } public String getMiddlename() { return this.middlename; } public void setMiddlename(String middlename) { this.middlename = middlename; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getSurname() { return this.surname; } public void setSurname(String surname) { this.surname = surname; } public Role getRole() { return this.role; } public void setRole(Role role) { this.role = role; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } } ``` So the method getUserById(Long user_id) doesn't get the information from database, it's just call user constructor. Why is it so? ``` public User getUserById(Long user_id) { Session session = null; User user = null; try { session = HibernateUtil.getSessionFactory().openSession(); user = session.load(User.class, user_id); Hibernate.initialize(user); } catch (Exception e) { e.printStackTrace(); } finally { if (session != null && session.isOpen()) { session.close(); } } return user; } ```