выходные данные двух таблиц mysql на jsp java - PullRequest
0 голосов
/ 05 ноября 2019

Я пишу простое приложение, использующее весеннюю загрузку, hibernate, mysql db, jsp. У меня есть две таблицы сотрудников и employee_vacation. У сотрудников есть столбцы:

имя сотрудника, фамилия сотрудника, дата сотрудника_фирмы, должность сотрудника, зарплата сотрудника, имя сотрудника, имя сотрудника, пароль сотрудника. employee_vacation имеет столбцы: id_vacation, employee_login, отпуск.

Я хочу объединить данные двух таблиц в JSP. Точнее, отобразите таблицу employee и employee_vacation на одной и той же странице jsp, но вместо таблицы employee_login enter code here employee_vacation, которая является ключевым ключом, ссылается на employee employee_login, отображаются имя и фамилия этого сотрудника. Возможно ли это сделать с помощью JpaRepository, операций crud, инструментов контроллера или синтаксического анализа json, или это невозможно?

Мои таблицы:

create table employees ( employee_name varchar (40), employee_surname varchar (40),employee_date_of_birth date, employee_profession varchar (40), employee_salary int (20), employee_email varchar (20) not null, 
employee_login varchar (20) not null unique, employee_password varchar (20), employee_role int (3) default 2, primary key (employee_login)); 

-

create table employee_vacation (id_vacation int (40) not null auto_increment,employee_login varchar (40) not null, vacation varchar (40), primary key (id_vacation), foreign key (employee_login) references employees (employee_login));

My Entities:

@Entity
@Table(name = "EMPLOYEES")
public class Employee {

    @Column(name = "employee_name")
    private String employeeName;

    @Column(name = "employee_surname")
    private String employeeSurname;

    @Column(name = "employee_date_of_birth")
    private Date employeeDateOfBirth;

    @Column(name = "employee_profession")
    private String employeeProfession;

    @Column(name = "employee_salary")
    private String employeeSalary;

    @Column(name = "employee_email")
    private String employeeEmail;

    @Id
    @Column(name = "employee_login" )
    private String employeeLogin;

    @Column(name = "employee_password")
    private String employeePassword;

    @Column(name = "employee_role")
    private Integer employeeRole;

     @OneToMany(mappedBy="employee")
        private List<EmployeeVacation> vac;
....

table EMPLOYEE_VACATION

@Entity
@Table(name = "EMPLOYEE_VACATION")
public class EmployeeVacation {

    @Id
    @Column(name = "id_vacation")
    private Integer idVacation;

    @Column(name = "employee_login" , insertable = false, updatable = false )
    private String employeeLogin;

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

    @ManyToOne
    @JoinColumn(name = "employee_login")
    private Employee employee;
...

service layers:

 @Service
@Transactional
public class EmployeeService {

   @Autowired
   EmployeeRepository rep;

   public Employee saveEmployeeServ(Employee empl) {
       Employee savedEmpl = rep.saveAndFlush(empl);

       return savedEmpl;
   }

   public List<Employee> showEmployeesServ() {

       return rep.findAll();
   }

   public Employee getEmployeeServ(String id) {

       Optional<Employee> empl = rep.findById(id);

       Employee employee = empl.get();

       return employee;

   }
...
}

@Service
@Transactional
public class EmployeeVacationService {

   @Autowired
   EmployeeVacationRepository rep;

   @Autowired
   EmployeeRepository rep1;

   public List<EmployeeVacation> showEmployeeVacationServ() {

       return rep.findAll();


   }



   public EmployeeVacation getEmployeeVacationServ(Integer id) {

       Optional<EmployeeVacation> empl = rep.findById(id);

       EmployeeVacation employeeVacation = empl.get();

       return employeeVacation;

   }

   public String getLoginEmployeeServ(Integer id) {

       Optional<EmployeeVacation> empl = rep.findById(id);

       EmployeeVacation employeeVacation = empl.get();

       return employeeVacation.getEmployeeLogin();
   }
...

controller:

@Controller
public class AdminController {

    @Autowired
    EmployeeService serv;

    @Autowired
    EmployeeVacationService servVac;

    @GetMapping("/welcome")
    public ModelAndView index() {

        ModelAndView mod = new ModelAndView("welcome");

        return mod;
    }

    @ModelAttribute(name = "employeeList")
    public List<Employee> getListEmployee() {

        List<Employee> employeeList = serv.showEmployeesServ();

        return employeeList;
    }

    @ModelAttribute(name = "employee")
    private Employee getEmptyEmployee() {
        return new Employee();
    }

    @ModelAttribute(name = "employeeList1")
    public List<EmployeeVacation> getListEmployee1(Model model) {

        List<EmployeeVacation> employeeVacList = servVac.showEmployeeVacationServ();



        return employeeVacList;
    }

    @ModelAttribute(name = "employeeVacation")
    private EmployeeVacation getEmptyEmployee1() {
        return new EmployeeVacation();
    }


}

jsp:

<h1>Employees</h1>
        </div>
    <table align="center">
        <tr>
            <th>
                <p>Name</p>
            </th>
            <th>
                <p>Surname</p>
            </th>
            <th>
                <p>Date of birth</p>
            </th>
            <th>
                <p>Profession</p>
            </th>
            <th>
                <p>Salary</p>
            </th>
            <th>
                <p>Email</p>
            </th>
            <th>
                <p>Login</p>
            </th>
            <th>
                <p>Password</p>
            </th>
            <th>
                <p>Role</p>
            </th>



        </tr>

        <c:forEach items="${employeeList}" var="employee">

            <tr>
                <td>${employee.employeeName}</td>
                <td>${employee.employeeSurname}</td>
                <td>${employee.employeeDateOfBirth}</td>
                <td>${employee.employeeProfession}</td>
                <td>${employee.employeeSalary}</td>
                <td>${employee.employeeEmail}</td>
                <td>${employee.employeeLogin}</td>
                <td>${employee.employeePassword}</td>
                <td>${employee.employeeRole}</td>
                <td><a
                    href="<c:url value="/page_empl_for_admin/${employee.employeeLogin}" />">change
                        data</a></td>
            </tr>
        </c:forEach>
    </table>

    <div class="center">
        <h1>Employee vacation</h1>
    </div>

    <table align="center">
        <tr>
            <th>
                <p>Name</p>
            </th>
            <th>
                <p>Surname</p>
            </th>
            <th>
                <p>Vacation</p>
            </th>
        </tr>

            <c:forEach items="${employeeList1}" var="employeeVacation" >

            <tr>
                <td>${employeeVacation.idVacation}</td>
                <td>${employeeVacation.employeeLogin}</td>
                <td>${employeeVacation.vacation}</td>

                </tr>
                </c:forEach>
                </table>


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...