Возможно ли иметь сопоставление "многие к одному / одному к многим" и "один к одному" для одних и тех же двух классов?
У меня есть две таблицы. Я успешно сослался на branch_id(таблица пользователей) и branch_id(таблица ветвей) в моем файле списка пользователей. На моем контроллере филиалов я хочу показать список филиалов с соответствующим менеджером. Я новичок в этом, поэтому я не совсем понимаю, как это работает.
Таблица филиалов
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 (таблица пользователей), или я могу использовать свое сопоставление многие-к-одному / один-ко-многим? Я попытался вызвать соответствующий менеджер филиала в моем 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 ответ
${branch.user.username}
выдаст ошибку, очевидно, потому что вы рассматриваете как объект с одним пользователем, но на самом деле это список пользователей.
private List<User> user;
так что попробуйте получить как показано ниже.
${branch.user[0].username}
здесь вы можете заменить ноль, просматривая список пользователей.