同一两个类是否可能同时具有多对一/一对多和一对一映射?

时间:2018-09-22 05:33:50

标签: spring-boot jpa one-to-many one-to-one many-to-one

我有两个桌子。我已经在用户列表文件中成功引用了branch_id(用户表)和branch_id(分支表)。在我的分支控制器上,我想显示分支列表及其相应的管理器。我是新手,所以我不完全了解它的工作原理。

分支表

Branch Table

用户表 User table

User.java

@Entity
@Table(name="user")
public class User {

    /......

    @ManyToOne()
    @JoinColumn(name="branch_id", referencedColumnName = "branch_id",insertable=false, updatable=false)  
    private Branch branch;


    public Branch getBranch() {
        return branch;
    }

    public void setBranch(Branch branch) {
        this.branch = branch;
    }


}

Branch.java

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

    /....

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

我是否必须在branch_manager(branch_table)和id(user table)之间声明一对一的映射,还是可以使用多对一/一对多的映射? 我试图像这样在我的branch_list.jsp中调用相应的分支经理:

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

但是当我包含“ branch.user.username”时,会给我错误。

非常感谢您。

1 个答案:

答案 0 :(得分:0)

${branch.user.username}显然会给出错误,因为您将其视为单个用户对象,但实际上是用户列表。

private List<User> user;

所以请尝试按以下方式获取。

${branch.user[0].username}

在这里您可以通过迭代用户列表来替换零。

相关问题