java - JSP:加入 2 个实体时出现 NumberFormatException

标签 java spring hibernate jsp

我正在尝试在 hibernate 中创建自定义查询,现在我正在使用内部联接。

这是我的代码: 分支存储库:

@Query("select b from Branch b inner join User u ON b.branch_manager = u.id")
List<Branch> findAllBranchInfo();

分行服​​务:

public List<Branch> getAllBranchInfo();

分支服务实现:

@Override
public List<Branch> getAllBranchInfo() {
    return (List<Branch>) branchRepository.findAllBranchInfo();
}

分支 Controller :

@RequestMapping(value="/BranchTest", method=RequestMethod.GET)
public ModelAndView testBranch() {
    ModelAndView model = new ModelAndView("test_branch");
    List<Branch> branchList = branchService.getAllBranchInfo();
    model.addObject("branchList",branchList);
    return model;
}

分支模型:

@Entity
@Table(name="branch")
public class Branch {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long branch_id;

@Column(name="branch_name")
private String branch_name;

@Column(name="branch_manager")
private long branch_manager;

public long getBranch_id() {
    return branch_id;
}

public void setBranch_id(long branch_id) {
    this.branch_id = branch_id;
}

public String getBranch_name() {
    return branch_name;
}

public void setBranch_name(String branch_name) {
    this.branch_name = branch_name;
}

public long getBranch_manager() {
    return branch_manager;
}

public void setBranch_manager(long branch_manager) {
    this.branch_manager = branch_manager;
}

@OneToMany(targetEntity=User.class, mappedBy="branch",cascade=CascadeType.ALL, fetch = FetchType.LAZY)
private List<User> user;

public List<User> getUser() {
    return user;
}

public void setUser(List<User> user) {
    this.user = user;
}


}

现在它给了我这个错误:

Hibernate: select branch0_.branch_id as branch_i1_0_, branch0_.branch_manager as branch_m2_0_, branch0_.branch_name as branch_n3_0_ from branch branch0_ inner join user user1_ on (branch0_.branch_manager=user1_.id)
2018-09-25 07:46:04.544 ERROR 1708 --- [nio-8080-exec-1] o.a.c.c.C.[.[localhost].[/].[jsp]        : Servlet.service() for servlet [jsp] threw exception

java.lang.NumberFormatException: For input string: "first_name"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_181]
at java.lang.Integer.parseInt(Integer.java:580) ~[na:1.8.0_181]
at java.lang.Integer.parseInt(Integer.java:615) ~[na:1.8.0_181]

我在任何将其声明为 Integer 的地方都找不到它。

这是我的jsp:

<c:forEach items="${branchList }" var="branch">
    <tr>
        <td>${branch.branch_name}</td>
        <td>${branch.user.first_name}</td>
    </tr>
</c:forEach>

每次我输入“${branch.user.branch_id}”时,都会出现错误。请帮我。非常感谢!

最佳答案

问题是一个分支有很多用户。 branch.user指的是一组用户,而不是一个用户。您应该迭代以检索每个用户的名字。

1.重命名容易混淆的方法getUser()进入getUsers()以更好地突出一对多关系。

2.这是修复您的 JSP 的尝试:

<c:forEach items="${branchList }" var="branch">
    <tr>
        <td>${branch.branch_name}</td>
        <c:forEach items="${branch.users}" var="user">
            <td>${user.first_name}</td>
        </c:forEach>         
    </tr>
</c:forEach>

我猜是这样的 {users.<n>} ,其中<n>是一个整数,指n用户列表的第一个元素。这就是 JSP 处理器尝试转换 first_name 的原因。当您有类似 {users.first_name} 的表达式时,转换为整数

关于java - JSP:加入 2 个实体时出现 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52488779/

相关文章:

java - Java 中的浮点精度和相等性

java - Jgraphx 内存不足 - Java

java - 无法获取类包的类型签名..Line

java - 如何找到特定数字的确切操作集?

java - jQuery AJAX 调用 Spring Controller 时出现 404 not found 错误

java - 删除在 Hibernate/Spring Data 中不起作用

java - 在 Spring 中访问计划任务

java - 如何通过java j2ee中的 Controller 设置外键?

java - 是否可以更改与表名不同的 BO 类名?

hibernate - 当@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 时,为什么@MappedSuperclass 上有相同的Id