Mit JPA Tabellen löschen

Status
Nicht offen für weitere Antworten.
G

Gast01

Gast
Eigentlich scheint meine Frage zu einfach zu sein, da Google dazu nix ausspuckt, aber ich komme irgendwie nicht drauf:

Ich nutze JPA und möchte gerne aus einer Klasse heraus bestimmte Tabellen komplett löschen, um sie anschließend mit frischen Daten initialisieren zu können.
Ich dachte da zunächst an zwei Varianten:

- hibernate.hbm2ddl.auto auf create-drop stellen. Aber dann wird die Tabelle bei jedem Neustart des Servers gelöscht, das will ich ja nicht.

- Über ein nativeQuery ein drop table und create table ausführen. Das klappt nicht.

Wie sollte also meine init() Methode aussehen?
 
M

maki

Gast
JPA ist nicht dazu da um DB Tabellen zu löschen, erstellen oder zu ändern.

Wenn du die Datenstruktur nicht ändern möchtest, würde es ja reichen, die Daten zu löschen.
 
G

Guest

Gast
maki hat gesagt.:
JPA ist nicht dazu da um DB Tabellen zu löschen, erstellen oder zu ändern.

Wenn du die Datenstruktur nicht ändern möchtest, würde es ja reichen, die Daten zu löschen.

Hmm ok. Ich arbeite auf einer Mysql Datenbank und mir gehts jetzt darum, die Daten zu löschen und die "Sequenz"(also Auto_Increment) wieder auf 1 zu setzen.
 
G

Gast

Gast
Nur deswegen wollte ich die Tabelle "droppen" und wieder "createn".
 
M

maki

Gast
Sollte doch mit mit einer "normalen" JDBC Connection zu lösen sein.

Warum ist es wichtig den internen Schlüssel zurückzusetzen/zu steuern?
 

byte

Top Contributor
Welche JPA Implementierung benutzt Du denn? Hibernate bietet die Möglichkeit, das Schema wegzuschmeissen und alles neu zu erzeugen. Die Funktion ist natürlich mit Vorsicht zu genießen. Ist aber durchaus praktisch, wenn man ein neues Schema von der grünen Wiese entwickelt.

Ansonsten schreibst (oder generierst) Du Dir halt DDL Scripte zum Dropen und Erzeugen der gewünschten Tabellen. Oder machst es kurz manuell, wenns ein einmaliger Vorgang ist.
 
G

Guest

Gast
Ich wollte für Tests die ids vorhersehbar machen und darum immer mal wieder zwischendurch zurücksetzen. Da ich sowieso schon JPA nutzte, wollte ich das eben damit auch gleich erledigen und nicht extra eine jdbc connection aufbauen. Habs dann z.B. mit nem truncate und nem native query probiert, aber das ging nicht. Ka was ich da vorher falsch gemacht hatte, aber nun funktioniert das was ich will auf einmal ^^

Code:
		String deleteQueryStr = "truncate table testdaten";
		Query deleteQuery = em.createNativeQuery(deleteQueryStr );
		deleteQuery.executeUpdate();

Macht jedenfalls das was ich will :)

@byto
Ja ich benutze Hibernate. Meinst du mit der Schema wegschmeißen und neu erzeugen Funktion das was ich im Eingangspost kurz erwähnt hatte? Also:
"- hibernate.hbm2ddl.auto auf create-drop stellen." Falls ja, wäre es noch ganz interessant zu wissen wie man diese Funktion triggern kann, ohne den Server neu zu starten.


Danke für alle Antworten =)
 
M

maki

Gast
ch wollte für Tests die ids vorhersehbar machen und darum immer mal wieder zwischendurch zurücksetzen.
Sag das doch gleich.

Dafür nimmt man DBUnit!!

Dann einfach für CLEAN_INSERT oder REFRESH_UPDATE als Strategie enscheiden und die sache ist gegessen, viel besser als alles zu Fuss selber machen :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Zwei Tabellen mit UNION ALL auf POJO mappen? Data Tier 5
M JPA JPQL - Tutorial Tabellen joinen ? Data Tier 1
D Hibernate Tabellen werden nicht mehr erstellt Data Tier 2
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
N [EclipseLink] Best Practise zur Generierung von Entities aus Tabellen Data Tier 28
A Fehlermeldung: Tabellen werden nicht gefunden Data Tier 2
MQue Hibernate Tabellen anlegen Data Tier 8
S Tabellen mit Hibernate auslesen Data Tier 4
pusteblume Hibernate: Abfrage über 2 Tabellen Data Tier 2
W JPA generiert die Tabellen bzw. die DDL Files nicht Data Tier 6
M EJB mehrere Tabellen? Data Tier 2
G N:M:K Beziehung, n:m nur mit 3 tabellen Data Tier 3
G JPA kann Objekt nicht löschen Data Tier 4
G Hibernate OneToMany und ManyToOne Objekte löschen Data Tier 13
A @ManyToMany - Kein Löschen bereits zugewiesener Entities Data Tier 6
F JPA + EclipseLink rekursive Beziehung löschen Data Tier 2
N Löschen OneToMany Beziehung (delete-orphan) geht nicht Data Tier 2
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
M EJBQL: Item aus einer Collection(ManyToOne) löschen Data Tier 7
G Hibernate: many-to-one - Verwaiste Datensätze löschen Data Tier 2
T Hibernate: Löschen vor Speichern Data Tier 34
S Hibernate: Objekt aus Liste löschen Data Tier 3
eSK Objekt löschen -> Ganze Tabelle gelöscht. Data Tier 6

Ähnliche Java Themen


Oben