I have 2 tables Employee and EmployeePosition (This has AUTOINCREMENT Field PositionId) Table. I am trying to insert values into table via Ibatis in a single save method of DAO.
Employee.XML
<insert id="insertEmployeeRecord" parameterType="Employee" >
insert into Employee (EmpNum,EmpName,ResidentRegNum) values
(#{empNumber},#{empName},#{ssn});
</insert>
<insert id="insertEmployeePosition" parameterType="EmployeePosition" useGeneratedKeys="true" keyProperty="positionId">
insert into EmployeePosition (Position1,Position2) values
(#{position1},#{position2});
</insert>
Model class
public class Employee {
private String empName;
private int empNumber;
private String ssn;
private String ssn1;
private EmployeePosition employeePosition;
}
public class EmployeePosition{
private int positionId;
private String position1;
private String position2;
}
DAO
public void saveEmployeeRecord(Employee empl)
throws SQLException {
SqlSession session = sqlSessionFactory.openSession();
empl.setEmpNumber(empl.getEmpNumber());
empl.setEmpName(empl.getEmpName());
empl.setDateOfBirth(empl.getDateOfBirth());
empl.setUserId(empl.getUserId());
empl.setUserPW(empl.getUserPW());
empl.setConfirmPW(empl.getConfirmPW());
empl.setWeddingAnvy(empl.getWeddingAnvy());
empl.setSingle(empl.isSingle());
empl.setSsn(empl.getSsn());
empl.setSsn1(empl.getSsn1());
EmployeePosition empPos=new EmployeePosition();
empl.setEmployeePosition(empPos);
session.insert("Employee.insertEmployeePosition", empPos);
empPos.setPosition1(empPos.getPosition1());
empPos.setPosition2(empPos.getPosition2());
session.insert("Employee.insertEmployeeRecord", empl);
session.commit(true);
session.rollback();
session.close();
//return workplaceDetail;
}
Unit Test case:
@Test
public void testInsertEmployee() throws SQLException{
Employee actual = new Employee();
actual.setEmpNumber(783);
actual.setEmpName("Hayes john");
actual.setSsn("05E-0965-084G");
EmployeePosition ep= new EmployeePosition();
ep.setPosition1("Dy Manager");
ep.setPosition2("Sr.Manager");
employeeDaoImpl.saveEmployeeRecord(actual);
assertEquals(10, actual.getEmpNumber());
Employee expected = employeeDaoImpl.geEmployeeById(actual.getEmpNumber()); //id = 21
assertEquals(actual, expected);
assertNotSame(actual, expected);
}
When i run unit test i get values insert to employee table but not to EmployeesPosition table. Bleow is output i am showing
DEBUG [main] - ==> Executing: insert into EmployeePosition (Position1,Position2) values (?,?);
DEBUG [main] - ==> Parameters: null, null
DEBUG [main] - ==> Executing: insert into Employee (EmpNum,EmpName,ResidentRegNum) values (?,?,?);
DEBUG [main] - ==> Parameters: 783(Integer), Hayes john(String), 05E-0965-084G(String),
Please let me know where i am going wrong.