Hallo,
angenommen ich habe zwei Klassen:
Eine Cover Klasse hat eine Page Klasse und diese Page Klasse besitzt einen Textinhalt, also es kann alles sein: JSON, DOC, TXT order sonst irgend-ein File. Somit ist diese Page Klasse gleichzeitig die "Owning Side" mit dem FremdSchlüssel. Die Cover Klasse, um die bidirektionale Beziehung aufzubauen, besitzt einen Page Feld mit Markierung "mappedBy". Damit habe ich die Beziehung aus dem Datenbank im Code fast vollständig wiedergegeben.
In der Datenbank habe ich überfüllt eine Menge Cover Datensätze, zu jedem Cover Datensatz möchte ich einen Page Datensatz hinzufügen, aber das alles soll auf der Java Seite stattfinden. Das heißt ich müsste jedesmal eine Cover-Entity aufrufen mit Hilfe von entityManager.find(Cover.class, id) und dann ein neues Objekt Page instanziieren, danach dieses Page Objekt zu dem EntityObjekt Cover hinzufügen und dann beide wieder in der Datenbank speichern. Dafür dachte ich die persist() und merge() Methoden zuverwenden in der Reihenfolge, falls die Reihenfolge unwichtig ist, dann bitte gleich Bescheid sagen. Das hat nicht geklappt, ohne @Transactional lief es nicht, also es wurde nichts persistiert. Meine Frage Dazu lautet:
-Wie kann ich die neue Page-Instanziierung zu der Cover-Entity einfügen und es persistieren, ohne eine jegliche Form von Transactional zu verwenden, auch ohne dabei auf JdbcTemplate zugreifen?
angenommen ich habe zwei Klassen:
Java:
@Entity
@Access(AccessType.FIELD)
public class Cover{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String title;
@OneToOne(mappedBy="cover")
private Page page;
//SETTER & GETTER außer setId()
}
--------------------------------------------
@Entity
@Access(AccessType.FIELD)
public class Page{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToOne
@JoinColumn(name="cover_fk")
private Cover cover;
private byte [] textDocument;
//SETTERS & GETTERS außer setId()
}
In der Datenbank habe ich überfüllt eine Menge Cover Datensätze, zu jedem Cover Datensatz möchte ich einen Page Datensatz hinzufügen, aber das alles soll auf der Java Seite stattfinden. Das heißt ich müsste jedesmal eine Cover-Entity aufrufen mit Hilfe von entityManager.find(Cover.class, id) und dann ein neues Objekt Page instanziieren, danach dieses Page Objekt zu dem EntityObjekt Cover hinzufügen und dann beide wieder in der Datenbank speichern. Dafür dachte ich die persist() und merge() Methoden zuverwenden in der Reihenfolge, falls die Reihenfolge unwichtig ist, dann bitte gleich Bescheid sagen. Das hat nicht geklappt, ohne @Transactional lief es nicht, also es wurde nichts persistiert. Meine Frage Dazu lautet:
-Wie kann ich die neue Page-Instanziierung zu der Cover-Entity einfügen und es persistieren, ohne eine jegliche Form von Transactional zu verwenden, auch ohne dabei auf JdbcTemplate zugreifen?