У меня проблема с отображением Hibernate.У меня есть соотношение один к другому между моей сущностью.Две таблицы в моей базе данных Oracle следующие ...
Employee
--------------------------
EMPLOYEE_ID
EMPLOYEE_FIRST_NAME
EMPLOYEE_LAST_NAME
HEALTH_PLAN_ID
Health_Plan
------------------=
HEALTH_PLAN_ID
HEALTH_PLAN_NAME
HEALTH_PLAN_RATE
И мое отображение ...
@Entity
@Table(name = "Employee")
@SequenceGenerator(name = "employee_seq", sequenceName = "employee_seq")
public class Employee {
private int employeeId;
private String firstName;
private String lastName;
private HealthPlan plan;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "employee_seq")
@Column(name = "employee_id", nullable = false)
public int getEmployeeId() {
return employeeId;
}
@Column(name = "employee_first_name", nullable = false)
public String getFirstName() {
return firstName;
}
@Column(name = "employee_last_name", nullable = false)
public String getLastName() {
return lastName;
}
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "HEALTH_PLAN_ID")
public HealthPlan getPlan() {
return plan;
}
}
@Entity
@Table(name = "HEALTH_PLAN")
@SequenceGenerator(name = "HEALTH_PLAN_SEQ", sequenceName = "HEALTH_PLAN_SEQ")
public class HealthPlan {
private int healthPlanId;
private String healthPlanName;
private double healthPlanRate;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HEALTH_PLAN_SEQ")
@Column(nullable = false, name = "HEALTH_PLAN_ID")
public int getHealthPlanId() {
return healthPlanId;
}
@Column(nullable = false, name = "HEALTH_PLAN_NAME", unique = true)
public String getHealthPlanName() {
return healthPlanName;
}
@Column(nullable = false, name = "HEALTH_PLAN_RATE")
public double getHealthPlanRate() {
return healthPlanRate;
}
}
Когда я запускаю ниже кода ....
public static void main(String[] args) throws SQLException {
HealthPlanDaoImpl healthDao = new HealthPlanDaoImpl();
EmployeeDaoImpl empDao = new EmployeeDaoImpl();
HealthPlan plan = new HealthPlan();
plan.setHealthPlanName("PLAN B");
plan.setHealthPlanRate(5.0);
Employee emp = new Employee();
emp.setPlan(plan);
emp.setFirstName("Jane");
emp.setLastName("Doe");
boolean isSuccess = empDao.addEmployee(emp);
System.out.println(isSuccess);
}
public class EmployeeDaoImpl{
public boolean addEmployee(Employee emp) {
boolean bolReturn = true;
Session session = HibernateUtil.beginTransaction();
try {
session.save(emp);
HibernateUtil.commitTransaction();
} catch (Exception e) {
e.printStackTrace();
bolReturn = false;
HibernateUtil.rollbackTransaction();
}
return bolReturn;
}
}
В Таблице Health_Plan HEALTH_PLAN_ID = 3 (что правильно !!!) В Таблице сотрудников HEALTH_PLAN_ID = 1850 (Откуда пришло это значение ??? Я ожидаю, что оно также будет 3).
Я пытался несколько раз, и я заметил, что в Таблице сотрудников HEALTH_PLAN_ID просто увеличивается на 300. Я думаю, что я уже установил опцию каскада.
Любые подсказки?