Problem beim Insert mit Hibernate

S

Stumpi

Gast
Hallo zusammen,

ich schreibe gerade eine kleine Anwendung in Java und probiere mich mit Hibernate aus, leider weiß ich nicht, wie ich die Fehlermeldung zu deuten habe :-(

Java:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See [url=http://www.slf4j.org/codes.html#StaticLoggerBinder]SLF4J Error Codes[/url] for further details.
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [Instrument]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2345)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2852)
	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
	at HibernateTest.main(HibernateTest.java:23)
Caused by: java.sql.SQLException: DEFAULT keyword cannot be used as column has no DEFAULT
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
	at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:524)
	at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:116)
	at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:90)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:54)
	... 16 more
Caused by: org.hsqldb.HsqlException: DEFAULT keyword cannot be used as column has no DEFAULT
	at org.hsqldb.error.Error.error(Unknown Source)
	at org.hsqldb.error.Error.error(Unknown Source)
	at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source)
	at org.hsqldb.ParserCommand.compilePart(Unknown Source)
	at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
	at org.hsqldb.Session.compileStatement(Unknown Source)
	at org.hsqldb.StatementManager.compile(Unknown Source)
	at org.hsqldb.Session.execute(Unknown Source)
	... 22 more

Vielleicht kann mir jemand einen Tipp gegen?

Danke und Gruß

Stumpi
 
S

Stumpi

Gast
Ich hab folgendes "gebaut"

Java:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="Instrument" table="Instrument">
    <id name="ISIN" column="ISIN" type="string">
      <generator class="native"/>
    </id>
    <property name="WKN"  column="WKN"  type="string" not-null="false"/>
    <property name="Name"   column="Beschreibung"   type="string" not-null="false"/>
    <property name="ersterHandelstag"   column="ersterHandelstag"   type="date" not-null="false"/>
    <property name="letzterHandelstag" column="letzterHandelstag" type="date" not-null="false"/>
   <property name="art" column="art" type="string" not-null="false"/>
  </class>
</hibernate-mapping>

Java:
import java.sql.Date;




public class Instrument {
	private String ISIN;
	private String WKN;
	private String Name;
	private Date ersterHandelstag;
	private Date letzterHandelstag;
	private String art; 

	public Instrument(String iSIN, String wKN, String name,
			Date ersterHandelstag, Date letzterHandelstag, String art) {
		super();
		ISIN = iSIN;
		WKN = wKN;
		Name = name;
		this.ersterHandelstag = ersterHandelstag;
		this.letzterHandelstag = letzterHandelstag;
		this.art = art;
	}
	public Date getErsterHandelstag() {
		return ersterHandelstag;
	}
	public void setErsterHandelstag(Date ersterHandelstag) {
		this.ersterHandelstag = ersterHandelstag;
	}
	public Date getLetzterHandelstag() {
		return letzterHandelstag;
	}
	public void setLetzterHandelstag(Date letzterHandelstag) {
		this.letzterHandelstag = letzterHandelstag;
	}
	public String getArt() {
		return art;
	}
	public void setArt(String art) {
		this.art = art;
	}
	public String getISIN() {
		return ISIN;
	}
	public void setISIN(String iSIN) {
		ISIN = iSIN;
	}
	public String getWKN() {
		return WKN;
	}
	public void setWKN(String wKN) {
		WKN = wKN;
	}
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}

	public Instrument() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String toString() {
		return "Instrument [ISIN=" + ISIN + ", WKN=" + WKN + ", Name=" + Name
				+ ", ersterHandelstag=" + ersterHandelstag
				+ ", letzterHandelstag=" + letzterHandelstag + ", art=" + art
				+ "]";
	}
	
	
	
	

}
 

mvitz

Top Contributor
Sieht auf den ersten Blick ok aus. Evtl. noch den Code wo du die Daten einfügst. Ansonsten dein gemapptes Objekt erstmal einfacher machen (nur ID) und dann nach und nach Felder wieder hinzufügen.
 
S

Stumpi

Gast
Ich glaube ich habs..bald

Java:
import org.hibernate.Hibernate;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
public class HibernateTest {
	public static void main(String args[]){
		Configuration con;
		con = new Configuration().configure();
		SessionFactory sessionFactory;
		sessionFactory = new Configuration().configure().buildSessionFactory();
		Session s = sessionFactory.openSession();
		Transaction t = s.beginTransaction();
		Instrument i = new Instrument();
		i.setISIN("DE000ABCDEF0");
		s.save(i);
		t.commit();
		

	}

}

In meiner Hibernate Config habe ich mal das angeschaltet:

Java:
    <property name="show_sql">true</property>

Da kam dann das in der Console:

Hibernate: insert into Instrument (ISIN) values (default)
 
S

Stumpi

Gast
Hab ich

Java:
<?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.driver_class">
      org.hsqldb.jdbcDriver
    </property>
    <property name="hibernate.connection.url">
      jdbc:hsqldb:file:c:/temp/testdb;shutdown=true
    </property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
    <property name="show_sql">true</property>
    <property name="transaction.factory_class">
      org.hibernate.transaction.JDBCTransactionFactory
    </property>
    <property name="hibernate.cache.provider_class">
      org.hibernate.cache.HashtableCacheProvider
    </property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <mapping resource="Instrument.hbm.xml"/>

  </session-factory>
</hibernate-configuration>
 
M

Marcinek

Gast
Hallo,

wenn der Generator für die ID Spalte native ist, dann kannst du den nicht beliebig setzten. Es darf für die Spalte kein Generator eingetragen werden.

Der native nutzt i.d.R. autoincrement Funktion der Datenbank um dadurch den "default" wert in die DB einzutragen.

Die Tabelle ist aber nicht als autoincrement deklariert.

Ist zwar sehr knapp aber ich denke das hilft ein wenig:

Understanding Hibernate <generator> element

Gruß,

Martin
 
Zuletzt bearbeitet von einem Moderator:
S

Stumpi

Gast
Dann sag ich doch mal danke sehr, das wars!!

Habe nun

Java:
 <generator class="assigned"/>

eingetragen und dann ging es!

Gruß

Stumpi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Problem beim initialisieren des Caches Data Tier 0
M Problem beim Laden von Objekten, die von anderen Applikationen in eine DB eingefügt wurden Data Tier 5
N Problem beim session.flush(); Data Tier 17
S JPA Problem mit Cascading Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C JPA FetchType.LAZY, Relation @OneToMany und Problem mit dem update Data Tier 1
K Problem mit EJBs und Transaktionen Data Tier 0
G JPA: Entity Klasse @JoinColumns Problem Data Tier 2
M JPA Problem: java.sql.SQLSyntaxErrorException: Data Tier 7
H Hibernate Problem mit Lazy Loading bei @OneToMany Collections Data Tier 5
M MySql und JPA-Timestamp Problem Data Tier 8
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
A JPA - ManyToMany Problem - keine Unique Mehrfachzuweisungen Data Tier 4
M Problem mit @Temporal Mapping und SQL Server Data Tier 3
P JPA - HashMap mit Many-to-Many Relation Problem Data Tier 4
B Problem mit @ManyToMany und CascadeType.ALL Data Tier 3
Blackskyliner [JPA][Anfänger] Problem mit Wertzuweisung aus Verbundtabelle Data Tier 2
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
B DatenquellenUpdater extends Thread - Problem mit PermGenSpace Data Tier 5
Y [openJPA] Problem mit Transaktion? Data Tier 2
A @SecondaryTable Problem Data Tier 9
Y Postgres und JPA - Primärschlüssel Problem Data Tier 3
P SQL PRoblem Hibernate? Data Tier 8
Y EJB Problem mit Transaktionen Data Tier 7
M Transaction / Session Problem Data Tier 4
G JPA 2.0 Query Problem Data Tier 3
P CORBA Problem bei EJB 3.0 Anwendung in Glassfish v3 Data Tier 7
F Problem mit Hibernate Schema Update Data Tier 2
S Lazy loading Problem Data Tier 2
M Insert-Problem mit JPA/Hibernate Data Tier 4
megachucky JPA - Problem mit Persistence Unit / Context Data Tier 1
H Hibernate Problem Data Tier 4
D Performance Problem mit Prepared Statement Data Tier 6
T Problem mit openJPA Data Tier 7
P Problem mit Data Tier 9
GilbertGrape Cascade Problem (Hibernate) Data Tier 3
C JPA Problem mit attributeOverride und mehrspaltigem PK Data Tier 2
B select "neu" statement Problem (jpql) Data Tier 8
boxi Hibernate Lazy Loading Problem Data Tier 2
M Problem mit Hibernate und SLF4J - NoSuchMethodException Data Tier 3
G Connection Problem - WAS 6.1, Hibernate, OS Authentication Data Tier 1
K Hibernate update-Problem Data Tier 36
J hibernate problem Data Tier 14
N Hibernate - Problem mit Update/Insert Data Tier 4
B Problem mit @PersistenceContext Data Tier 4
G Problem with mapped of the tables at one to one relationship Data Tier 8
G Hibernate Collection Mapping - Fehler beim Updaten der DB Data Tier 0
R NPE beim Persistieren einer Entität Data Tier 6
R Beim deployen und initialisieren der DB werden Umlaute nicht gespeichert Data Tier 5
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
A Probleme beim deployen Data Tier 4
T DB Daten beim Anlegen neuer EntityManagerFactory verloren Data Tier 3
F Hibernate HQL INSERT in Tabelle mit eingebetteter Klasse Data Tier 4
D jpq entity life cycle - insert, update... Data Tier 5
A JPA/Hibernate: Update/Delete/Insert auf Entities von DB-Views Data Tier 3

Ähnliche Java Themen


Oben