Hibernate 自定义 class 映射

Hibernate custom class mapping

当我向用户发送使用此代码的信息时,它可以正常工作。

 public List<Users> getActiveUsers(User user) {
    EntityManager entityManager = getEntityManager();
   List<User> Users = new ArrayList();
    try {
        users = entityManager.createQuery("select e from User e where  e.deleted = :deleted", User.class)
                .setParameter("deleted", false)                 
                .getResultList();
    } finally {
        entityManager.close();
    }
    return users;
}

但是,如果我尝试使用以下代码仅获取一个用户,则会失败。

User user = (User) entityManager.createQuery("select e from User e where  e.deleted = :deleted")
                .setParameter("deleted", false)+                 
                .getSingleResult();

我无法获取映射用户,异常是:"can't convert com.project.model.User to com.project.model.User"

您忘记输入 class 类型 User.class:

entityManager.createQuery("SELECT u FROM User u where  u.deleted = :deleted", User.class)
             .setParameter("deleted", false).getSingleResult();

你的方法:

 public User getActiveUser(User user) {
    EntityManager entityManager = getEntityManager();      
    try {
        User user = (User) = entityManager.createQuery
                           ("SELECT u FROM User u WHERE u.deleted = :deleted", User.class)
                           .setParameter("deleted", false).getSingleResult();
    } finally {
        entityManager.close();
    }
    return user;
}
  • 看第一个例子,你使用用户 class 和第二个用户(最后没有 S)
  • 你需要小心这个查询,因为它们可能返回不止一条记录

显然代码没有任何问题。我发现问题和这个人一样:

A classloader proplem related to spring-boot-devtools

但是,带有推土机参考的 .properties 文件对我不起作用。我设法通过从项目中删除 spring-devtools 来启动我的代码和 运行。猜猜我可以不用实时重新加载!