Пожалуйста, помогите! Это заняло у меня один день, и я не приблизился к решению проблемы. Моя установка выглядит следующим образом:
- Затмение Индиго
- Eclipselink 2.3
- Apache Tomcat 6
Что я делаю, так это сохраняю сущность, которая имеет отображение @OneToOne с дочерней сущностью. Как только запись находится в базе данных, я запускаю команду выбора и успешно выбираю вновь вставленную запись. Тем не менее, дочерняя сущность равна нулю.
Моя цель - вставить только родительскую запись, потому что дочерняя запись уже находится в БД.
Вопрос: что мне нужно изменить, чтобы заполнить дочернюю запись?
У меня есть существо, которое я настойчиво:
EntityManager em = getEntityManager();
try {
em.getTransaction().begin();
em.persist(timeSheet);
em.getTransaction().commit();
}
Сущность содержит @OneToOne:
@Entity
@Cache(expiry=-1)
@Table(name="TIME_SHEET")
public class TimeSheet implements Serializable {
private static final long serialVersionUID = 1L;
@OneToOne(fetch=FetchType.EAGER)
@JoinColumns({
@JoinColumn(name="PROJECT_ID", referencedColumnName="PROJECT_ID", nullable = false, insertable=false, updatable=false),
@JoinColumn(name="COMPANY_ID", referencedColumnName="COMPANY_ID", nullable = false, insertable=false, updatable=false)
})
private Project project;
public Project getProject() {
return project;
}
Дочерняя сущность:
@Entity
@Cache(expiry=-1)
@Table(name="PROJECT")
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ProjectPK id;
После сохранения и выбора «Расписания» «Проект» становится пустым. Что я должен сделать, чтобы «проект» был заполнен?
Спасибо!