-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Alter Datensatz wird beim Speichern immer überschrieben
PostPosted: Thu Nov 08, 2007 8:12 pm 
Beginner
Beginner

Joined: Wed Jul 18, 2007 6:13 am
Posts: 28
Hallo

Jedes Mal wenn ich einen neuen Datensatz in meine Datenbank einfügen möchte, wird der alte Datensatz überschrieben.
Meiner Meinung liegt es daran, dass immer die gleiche Session genommen wird oder die ID nicht weitergezählt wird. Weiß jemand Rat?

Hier meine main-Class die ich ausführe:

public class MainClass {

private static final SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

public static void main (String args[]) {

MainClass m = new MainClass();
m.speichern;
}

public void speichern() {

Vorlesung vorlesung = new Vorlesung();
vorlesung.setName("Deutsch");

Student student = new Student();
student.setVorname("Hans");
student.setName("Peter");
student.setVorlesung(vorlesung);

Session session = sessionFactory.openSession();
Transaction trans = session.beginTransaction();

session.save(vorlesung);
session.save(student);

trans.commit();
session.close

}
}


Klasse Student:

@Entity
@SequenceGenerator(name="sequenz", sequenceName="S_SEQ", initialValue=1, allocationSize=1)
@Table(name="Student")
public class Student {

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE. generator="sequenz")
int matrikelnr;

@ManyToOne(mappedBy="vorlesung")
@JoinColumn(name="Vorlesungsnr")
Vorlesung vorlesung;

@Column(name="NAME")
String name;

//Getter und Setter

Klasse Vorlesung:

@Entity
@SequenceGenerator(name="sequenz", sequenceName="V_SEQ", initialValue=1, allocationSize=1)
@Table(name="Vorlesung")
public class Vorlesung {

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE. generator="sequenz")
int Vorlesungsnr;

@OneToOne(mappedBy="vorlesung")
Student st;

@Column(name="NAME")
String name;

//Getter und Setter
}[/b]


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 13, 2007 3:44 am 
Expert
Expert

Joined: Thu Jul 05, 2007 9:38 am
Posts: 287
Mach doch mal deine Id Spalten zu Long Spalten (oder auch Integer wenn du ein paar Byte sparen möchtest)

Durch den null Wert erkennt Hibernate neue Objekte, die eine neue ID benötigen.

----

Wo genau erzeugst du denn die neuen Objekte, ich sehe nur jeweils Vorlesung und ein Student Objekt.

Solltest du bei mehrere Ausführungen des Programmes auf mehrere Einträge hoffen, prüf doch mal deinen
hibernate.hbm2ddl.auto Wert. Es könnte sein, dass du bei jedem Start ein neues Schema anlegst.

J.S.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 13, 2007 6:07 am 
Beginner
Beginner

Joined: Wed Jul 18, 2007 6:13 am
Posts: 28
Besten Dank für den Tipp!

Es lag wirklich daran. Hatte in meiner hibernate.cfg.xml
<property name="hbm2ddl.auto">create</property> stehen. Habe es jetzt durch <property name="hbm2ddl.auto">update</property> ausgetauscht und jetzt klappt es!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.