我是Hibernate和Spring MVC的新手。我正在創建一個Web應用程序,我希望顯示所有電話號碼的列表以及分配給每個號碼的用戶名。有兩個表格 - 一個用於數字,另一個用於用戶。每個都由id索引。用戶標識是數字表中的外鍵。當我嘗試在JSP頁面中顯示名稱時,我獲得的是用戶的id表示,而不是返回數字列表時的名稱值。是否有一個標準的hibernate CRUD示例會創建List以包含用戶的名稱值而不是其ID。表示?如果沒有,有人可以幫我創建正確的查詢過程嗎?如何在JSP頁面顯示來自2個表的數據
我正在使用Eclipse Mars IDE和Tomcat 8一起使用Java 1.8,Spring 4.2.5,MySQL 5.7和Hibernate 5.0.1。
實體類:
@Entity
@Table(name="Numbers")
public class Numbers {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", unique=true, nullable=false)
private Long id;
@Column(name="Number", nullable=false)
private String Number;
@Column(name="UserID", nullable=false)
private Long UserID;
@ManyToOne
@JoinColumn(name="FK_NUMBERS_USER")
private Users Username;
//getters & setters
}
@Entity
@Table(name="Users")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", unique=true, nullable=false)
public Long id;
@Column(name="Username", unique=true, nullable=false)
public String Username;
//getters & setters
}
控制器代碼:
@RequestMapping(value="/numbers", method = RequestMethod.GET)
public ModelAndView getAllNumbers() {
List<Numbers> allNumbers = numbersService.findAllNumbers();
ModelAndView model = new ModelAndView("numbers");
model.addObject("numbers", allNumbers);
return model;
}
服務接口:
public interface NumbersService {
void saveNumber(Numbers number);
void deleteUser(Numbers number);
List<Numbers> findAllNumbers();
}
JSP文件C:的foreach:
table border="1">
<tr>
<th>Number</th>
<th>Username</th>
</tr>
<tbody>
<c:forEach items="${numbers}" var="numbers">
<tr>
<td>${numbers.id}</td>
<td>${numbers.number}</td>
<td>${numbers.username}</td>
</tr>
</c:forEach>
</tbody>
</table>
從控制器
控制檯輸出處理時,查詢號碼:
Number ID Number User ID
1 12055551212 1
2 12065551212 2
3 12075551212 1
我不能得到得到應有的JSP頁面上相同的輸出「用戶id」如果使用號碼的數字類,而不是一個性質。 JSP中的用戶名錶格字段爲空。如何獲取JSP文件中的名稱?
DAO實現:
package com.voip.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.voip.dao.NumbersDAO;
import com.voip.domain.Numbers;
import com.voip.domain.Users;
import com.voip.service.NumbersService;
public class NumbersServiceImpl implements NumbersService {
@Autowired
private NumbersDAO numbersDAO;
@Override
public List<Numbers> findAllNumbers() {
List<Numbers> allNumbers = (List<Numbers>) numbersDAO.findAll();
return allNumbers;
}
}
試過這個,但JSP對於$ {numbers.username.username}數據仍然是空白的 –