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 来启动我的代码和 运行。猜猜我可以不用实时重新加载!
当我向用户发送使用此代码的信息时,它可以正常工作。
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 来启动我的代码和 运行。猜猜我可以不用实时重新加载!