Я использую JPA2 с реализацией EclipseLink
! [Простая структура таблиц] [1]
Вот две таблицы, которые я пытаюсь отобразить, иJPA-аннотации.
public class Story implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
Integer id;
@Temporal(TemporalType.TIMESTAMP)
@Column (name="DATE_CREATED")
Date dateCreated;
String title;
String description;
@Column(name="AUTHOR_ID")
Integer authorId;
@Column(name="COUNTRY_ID")
Integer countryId;
private String reviews;
@OneToMany(mappedBy = "story", cascade=CascadeType.ALL)
private List<Tip> tipList;
}
public class Tip implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
private String description;
private Integer vote;
@ManyToOne (cascade=CascadeType.ALL)
@JoinColumn(name="STORY_ID", referencedColumnName="ID")
private Story story;
}
В качестве простого примера я хотел бы сохранить историю и некоторые советы, связанные с историей, в одной транзакции.Вот фрагмент кода, который делает это:
Story newStory = new Story(title, body, ...);
EntityTransaction transaction = em.getTransaction().begin();
boolean completed = storyService.create(newStory);
//The tips are saved as a List<String>. This methods creates the needed List<Tip> from the Strings
List<Tip> tips = TipUtil.getTipList(tipList);
newStory.setTipList(tips)
transaction.commit();
У меня нет ошибок, и все объекты сохраняются в базе данных.Проблема в том, что в таблице tip поле story_id
всегда равно NULL
.Я могу представить, что JPA не может получить новый id
из таблицы истории.Какой правильный подход здесь?
LE
В текущем состоянии кода сущности Tip
сохраняются, но идентификатор страны остается нулевым.