Hallo
Ich habe mich vor kurzem in die Java-Welt eingearbeitet. Nachdem ich mir die Grundlagen von Hibernate angeeignet habe und das auch geklappt hat, möchte ich nun Hibernate mit Annotations verwenden. Ich habe diesbezüglich schon das Internet durchforstet (auch die Doku von hibernate.org), aber so richtig "klick" hat es bei mir noch nicht gemacht :-) Ich habe mir ein einfaches Beispiel zusammengebastelt und versucht soweit zu kommen, wie es nur geht. Jetzt hänge ich jedoch an folgenden Problem...
Habe meinen Quellcode und die Fehlermeldung eingebunden, es wäre supernett, wenn mir einer helfen könnte, weil ich hier schon ein paar Tage dran sitze...Wenn irgendwelche Informationen noch fehlen, einfach Bescheid sagen.
#####################Tabelle###################
Tabelle: STUDENT
MATRIKELNR NAME VORNAME
0000000001 Raab Stefan
0000000002 Stallone Sylvester
#############Meine Main-Methode:###################
package Hibernate_Annotations;
import org.hibernate.*;
import org.hibernate.cfg.AnnotationConfiguration;
public class MainClass {
private static final SessionFactory sessionFactory =
new AnnotationConfiguration().configure("Hibernate_Annotations/hibernate.cfg.xml").buildSessionFactory();
public static void main (String[] args) {
MainClass m = new MainClass();
m.speichern();
}
public void speichern() {
Session session = sessionFactory.openSession();
Transaction trans = session.beginTransaction();
Student st = new Student();
st.setName("Hans");
st.setVorname("Wurst");
session.save(st);
trans.commit();
session.close();
}
#############Student.java#######################
package Hibernate_Annotations;
import javax.persistence.*;
@Entity
@Table(name = "STUDENT")
public class Student {
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_STUDENT")
@Column(name = "MATRIKELNR")
int matrikelnr;
@Column(name = "NAME")
String name;
@Column(name = "VORNAME")
String vorname;
public int getMatrikelnr() {
return matrikelnr;
}
public void setMatrikelnr(int matrikelnr) {
this.matrikelnr = matrikelnr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
}
###############hibernate.cfg.xml##############
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">
jdbc:oracle:thin:@localhost:1521:XE
</property>
<property name="hibernate.connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="hibernate.connection.username">sandra</property>
<property name="hibernate.connection.password">sandra</property>
<mapping class="Hibernate_Annotations.Student"/>
</session-factory>
</hibernate-configuration>
###############Fehlermeldung#################
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at Hibernate_Annotations.MainClass.speichern(MainClass.java:31)
at Hibernate_Annotations.MainClass.main(MainClass.java:18)
Caused by: java.sql.SQLException: ORA-02289: Sequence ist nicht vorhanden.
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:799)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
... 11 more
Dabei existiert die Sequence SEQ_STUDENT, der Datenbankuser hat auch alle Rechte...Woran könnte es liegen, das er nicht den nächsten Wert generiert?
Last edited by Java_Newbie on Wed Jan 17, 2007 5:38 am, edited 3 times in total.
|