首页 > 解决方案 > EntityManager.find() 或 EntityManager.CreateQuery() 在获取数据时不一致

问题描述

在我的hibernate 5.0中,我正在使用EntityManager.find(class,id)并且它正在根据 Id 获取对象,但它不一致,有时它没有获取数据并且数据在 中可用DB (MySql),我也尝试过EntityMa,nager.CreateQuery("")同样的问题,因为我调试并发现它没有命中数据库,我无法找出根本原因。下面是我的DAO and model

 @Override
public User getUserById(int userId)
{
    User user = null;
    try {
        logger.info("fetching user details of userid :"+userId);
        user = entityManager.find(User.class,userId);
    } catch (HibernateException e) {
        logger.error("Error finding user : " + e);
    }
    return user;
}

模型:

        @Entity @Table(name = "user", 
          uniqueConstraints=  @UniqueConstraint(columnNames={"email_id"})) 
         @JsonIgnoreProperties({  "hibernateLazyInitializer", "handler" }) 
           @XmlAccessorType(XmlAccessType.FIELD)
          @XmlRootElement(name = "user") 
         public class User implements Serializable {

        @Id     
        @GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
        @GenericGenerator(name = "native", strategy = "native")     
        @Column(name = "user_id")   
        private int userId; 

        /** some more column and getter setter **/  

        //Mappings

        @JsonIgnore     
        @Access(AccessType.PROPERTY)
        @OneToMany(mappedBy = "userId", fetch = FetchType.EAGER)    
        private  Set<Contract_Reviewer> contract_Reviewer;      

        @ManyToOne(fetch = FetchType.EAGER,cascade = {CascadeType.ALL}, optional = false)
        @JoinColumn(name = "department_id")     
        private Department departments;
 }

标签: javamysqlhibernatejpaentitymanager

解决方案


推荐阅读