Hibernate自定义类映射

Hibernate自定义类映射,hibernate,spring-data-jpa,hibernate-mapping,hibernate-criteria,Hibernate,Spring Data Jpa,Hibernate Mapping,Hibernate Criteria,当我向使用此代码的用户发送fech时,它会按需要工作 public List<Users> getActiveUsers(User user) { EntityManager entityManager = getEntityManager(); List<User> Users = new ArrayList(); try { users = entityManager.createQuery("select e from Use

当我向使用此代码的用户发送fech时,它会按需要工作

 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;
}

我无法获取映射用户,例外情况是:“无法将com.project.model.user转换为com.project.model.user”

您忘记放置类类型
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;
}
  • 在第一个示例中,您使用Users类,在第二个用户上使用(最后没有S)
  • 您需要注意这个查询,因为它们可能返回多个记录

您忘了将类类型
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;
}
  • 在第一个示例中,您使用Users类,在第二个用户上使用(最后没有S)
  • 您需要注意这个查询,因为它们可能返回多个记录

    • 显然代码没有问题。我发现问题和这个家伙一样:


      但是,带有dozer引用的.properties文件对我不起作用。通过从项目中删除SpringDevTools,我成功地启动并运行了我的代码。我想我可以活下去,没有生活

      显然代码没有问题。我发现问题和这个家伙一样:


      但是,带有dozer引用的.properties文件对我不起作用。通过从项目中删除SpringDevTools,我成功地启动并运行了我的代码。我想我可以活下去,没有生活

      能否尝试使用
      entityManager.createQuery(query,User.class)
      ?你在哪里部署这个?我已经试过了,结果一样。我部署在哪里?不确定我是否理解,它在localhost中,并且该方法正在userRepositoryCustom类中调用。您使用的是什么应用程序服务器,这似乎是一个与类加载器相关的问题。还可以尝试将“setMaxResults(1)”添加到查询中。我正在使用GlassFish。您可以添加日志吗?您可以尝试使用
      entityManager.createQuery(query,User.class)
      ?你在哪里部署这个?我已经试过了,结果一样。我部署在哪里?不确定我是否理解,它在localhost中,并且该方法正在userRepositoryCustom类中调用。您使用的是什么应用程序服务器,这似乎是一个与类加载器相关的问题。另外,请尝试将“setMaxResults(1)”添加到您的查询中。我正在使用GlassFish。您可以添加日志吗?我已经尝试过这两种方法,casting(User)和adding User.classI我已经尝试过了,这是我得到的错误
      无法将“class com.project.model.User(由sun.misc.Launcher$AppClassLoader(id=8597)的实例加载)”的实例传递到的实例中“class com.project.model.User(由org.springframework.boot.devtools.restart.classloader.RestartClassLoader(id=12414)的实例加载)”
      我已经尝试了这两种方法,casting(User)和adding User.classI已经尝试过了,这是我得到的错误
      无法传递“class com.project.model.User”的实例(由sun.misc.Launcher$AppClassLoader(id=8597)实例加载)到“class com.project.model.User(由org.springframework.boot.devtools.restart.classloader.RestartClassLoader(id=12414)实例加载)”的实例中。