gpt4 book ai didi

java - 无法从用户表中获取所有 userRole = "ManagerRole"的位置

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:46 25 4
gpt4 key购买 nike

这是我的实体类。

@NamedQueries({ @NamedQuery(name = UsersEntity.NAMED_QUERY_SELECT_ALL_BY_MANAGER_ROLE, 
query = "SELECT e FROM " + UsersEntity.ENTITY_NAME + " e WHERE e." +
UsersEntity.FIELD_NAME_USER_ROLE + " = '" +
UsersVO.USER_ROLE + "'") })

@Column(name = "USER_ROLE", nullable = false, length = 30)
private String userRole;
public static final String FIELD_NAME_USER_ROLE = "userRole";

这是我执行查询的java类

@GET
@Path("/userrole")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public UsersListVO getUsers(@QueryParam("userRole") String userRole) {
// public UsersListVO getUsers(){
System.out.println(">>>>>here");
UsersListVO usersListVO = new UsersListVO();
try {
List<UsersEntity> usersEntityList = em.createNamedQuery(UsersEntity.NAMED_QUERY_SELECT_ALL_BY_MANAGER_ROLE, UsersEntity.class).setParameter(UsersEntity.FIELD_NAME_USER_ROLE, userRole).getResultList();

测试用例是:-

@Test
public void testGetUsers() {
System.out.println("Start test ");
UsersListVO usersListVO = baseWebTarget.path("userrole").queryParam("userRole", "AppSystemManagerUserRole").request(MediaType.APPLICATION_JSON).get(UsersListVO.class);
if (usersListVO.getStatusType().equals(StatusTypeVO.FAILURE)) {
Assert.fail(usersListVO.getMessage());
} else {
System.out.println(usersListVO.getMessage());
}
}

我想从用户表中获取角色为 managerRole 的所有经理。但是在我的 jdeveloper 中执行测试用例时出现错误。我得到的错误是

java.lang.AssertionError: You have attempted to set a parameter value using a name of userRole that does not exist in the query string SELECT e FROM UsersEntity e WHERE e.userRole = 'AppSystemManagerUserRole'.

最佳答案

错误

java.lang.AssertionError: 您尝试使用查询字符串中不存在的 userRole 名称设置参数值 SELECT e FROM UsersEntity e WHERE e.userRole = 'AppSystemManagerUserRole' 表明您正在尝试设置命名查询中不存在的参数。

您的命名查询:

query = "SELECT e FROM " + UsersEntity.ENTITY_NAME + " e WHERE e." + 
UsersEntity.FIELD_NAME_USER_ROLE + " = '" + UsersVO.USER_ROLE + "'"

字符串连接后的结果是:

query = "SELECT e FROM UsersEntity e WHERE e.userRole = 'AppSystemManagerUserRole'"

如您所见,没有可以设置的命名参数。当您尝试调用 setParameter(UsersEntity.FIELD_NAME_USER_ROLE, userRole) 时,它引发了异常。

您需要在命名查询中引入如下命名参数,您可以稍后在代码中设置该参数。

query = "SELECT e FROM " + UsersEntity.ENTITY_NAME + " e WHERE e." + 
UsersEntity.FIELD_NAME_USER_ROLE + " = :" + UsersEntity.FIELD_NAME_USER_ROLE

会导致

query = "SELECT e FROM UsersEntity e WHERE e.userRole = :userRole"

有了这个,您应该能够设置参数并且应该可以工作。

关于java - 无法从用户表中获取所有 userRole = "ManagerRole"的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com