@ManyToOne mapping fail to save parent ID

Я использую 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 из таблицы story. Каков здесь правильный подход?

LE

В текущем состоянии кода сущности Tip персистируются, но ID страны остается null.

13
задан Ionut 28 February 2012 в 17:59
поделиться