estoy usando JPA2 con la implementación EclipseLinkmapeo @ManyToOne no puede guardar ID padres
! [Estructura de la tabla simple] [1]
Aquí están las dos tablas que intento trazar y la Anotaciones 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;
}
Como un ejemplo simple, me gustaría insistir en una historia y algunos consejos relacionados con la historia en la misma transacción. Aquí es la sección de código que hace que:
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();
que no tienen errores y todas las entidades que se conservan en la base de datos. El problema es que en la tabla de sugerencias el campo story_id
siempre es NULL
. Me imagino que JPA no puede obtener el nuevo id
de la tabla de la historia. ¿Cuál es el enfoque correcto aquí?
LE
En el estado actual del código, las entidades Tip
se conservan pero el identificador de país sigue siendo nula.
Me pregunto si no hay una forma más automática de hacerlo. Además, realmente no creo que eliminar el campo de historia en Tip sería una buena idea, porque de esta manera, tendría que deshacerse de la '@PrimaryKeyJoinColumn (name =" STORY_ID ", referenciadoColumnName =" ID ") ', dejando a JPA sin ninguna pista sobre cómo debería unirse. Esto es lo que entendí de leer un poco sobre el tema. Por favor, avíseme si me equivoco. – Dragos
Ebean tiene una solución automática para este, pero las implementaciones de JPA no ofrecen una solución automática. – Palesz