public Object getWriteControlObject() {
   if (ctrlEmp == null) {
     ctrlEmp = new Employee();
     ctrlEmp.firstName = FNAME;
     ctrlEmp.lastName = LNAME;
     ctrlEmp.empId = EMPID;
     ctrlEmp.mgrId = MGRID;
     ctrlEmp.setProject(PNAME);
     ctrlEmp.data1 = DATA1;
     ctrlEmp.data2 = DATA2;
     ctrlEmp.salary = SALARY;
     ctrlEmp.privateData = PRIVATE_DATA;
     ctrlEmp.characterData = CHARACTER_DATA;
     ctrlEmp.projectId = PROJECT_ID;
     ctrlEmp.setSomeString(null);
   }
   return ctrlEmp;
 }
  @Test
  public void testBidirectionalAssociation() throws Exception {
    assertTrue(SchemaUtil.isColumnPresent("Dependent", "emp_empId", metadata()));
    assertTrue(!SchemaUtil.isColumnPresent("Dependent", "empPK", metadata()));
    Employee e = new Employee();
    e.empId = 1;
    e.empName = "Emmanuel";

    Session s = openSession();
    s.getTransaction().begin();
    s.persist(e);
    Dependent d = new Dependent();
    d.emp = e;
    s.persist(d);
    s.flush();
    s.clear();
    d = getDerivedClassById(e, s, Dependent.class);
    assertEquals(e.empId, d.emp.empId);
    s.getTransaction().rollback();
    s.close();
  }
  public Object getControlObject() {
    Employee ctrlEmp = new Employee();
    ctrlEmp.firstName = FNAME;
    ctrlEmp.lastName = LNAME;
    ctrlEmp.empId = EMPID;
    ctrlEmp.mgrId = MGRID;
    ctrlEmp.setProject(PNAME);
    ctrlEmp.data1 = DATA1;
    ctrlEmp.data2 = DATA2;
    ctrlEmp.salary = SALARY;
    ctrlEmp.privateData = PRIVATE_DATA;
    ctrlEmp.characterData = CHARACTER_DATA;
    ctrlEmp.projectId = PROJECT_ID;

    // 'privateData' is write only
    ctrlEmp.privateData = null;
    // JAXB will default a null String to ""
    ctrlEmp.someString = "";

    return ctrlEmp;
  }