Javaで
現在独学で社内日報を作成する機能をつrくっているのですが、新しくフォロー機能を追加しようと考えてます。
Daoモデルの設計として
@Table(name = "follow_list")
@NamedQueries({
@NamedQuery(
name = "getMyfollowlist",
query = "SELECT f.id_ee FROM Follow AS f WHERE f.id_er =:id ORDER BY f.id_ee"
)
})
@Entity
public class Follow{
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
//フォローする側のID @ManyToOne @JoinColumn(name = "id_er", nullable = false) private Employee id_er; //フォローされている側のID @ManyToOne @JoinColumn(name = "id_ee", nullable = false) private Employee id_ee; public Integer getId_er(){ return id_er.getId(); } public Integer getId_ee(){ return id_ee.getId(); } public void setId_er(Employee id_er){ this.id_er=id_er; } public void setId_ee(Employee id_ee){ this.id_ee=id_ee; }
}
このように設計して
サーブレットで
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
EntityManager em = DBUtil.createEntityManager();
int page = 1; try{ page = Integer.parseInt(request.getParameter("page")); } catch(NumberFormatException e) { } List<Employee> employees = em.createNamedQuery("getAllEmployees", Employee.class) .setFirstResult(15 * (page - 1)) .setMaxResults(15) .getResultList(); long employees_count = (long)em.createNamedQuery("getEmployeesCount", Long.class) .getSingleResult(); //現在ログインしているユーザーのID Integer id; Employee login_employee = (Employee)request.getSession().getAttribute("login_employee"); id=login_employee.getId(); //現在ログインしているユーザーのIDをもとにフォローリストテーブルデータを取得 List<Employee> follow_list =em.createNamedQuery("getMyfollowlist", Employee.class) .setParameter("id",id) .getResultList(); em.close(); //現在ログインしているユーザーが、employeesで取得した格社員をフォローしているかしていないかをMapで管理 Map<Integer,Boolean> map = new HashMap<>(); employees.forEach(employee -> { if(follow_list.contains(employee.getId())){ map.put(employee.getId(), true); }else { map.put(employee.getId(), false); }; }); request.setAttribute("employees", employees); request.setAttribute("employees_count", employees_count); request.setAttribute("page", page); request.setAttribute("map", map); if(request.getSession().getAttribute("flush") != null) { request.setAttribute("flush", request.getSession().getAttribute("flush")); request.getSession().removeAttribute("flush"); } RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/followlist/index.jsp"); rd.forward(request, response); }
のようにフォローした社員情報をList型で取得したいのですが
Parameter value [1] did not match expected type [models.Employee (n/a)]
というエラーが出てしまいます。Employeeは社員情報のクラスDAOです。
あなたの回答
tips
プレビュー