this is my main code:
package org.javab.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.javab.Address;
import org.javab.Userdetails;
public class Hibernatetest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Userdetails user = new Userdetails();
Address addr= new Address();
addr.setCity("banglore");
addr.setDoorno("10");
addr.setStreet("street");
user.setAddress(addr);
Address addr1= new Address();
addr1.setCity("manglore");
addr1.setDoorno("145");
addr1.setStreet("addr lane 1");
user.setAddress(addr1);
user.getCollectionofaddr().add(addr);
user.getCollectionofaddr().add(addr1);
user.setUserid(11);
user.setUsername("ten");
@SuppressWarnings("deprecation")
SessionFactory sessionfactory =new Configuration().configure().buildSessionFactory();
Session session =sessionfactory.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session.close();
session =sessionfactory.openSession();
session.beginTransaction();
user = (Userdetails) session.get(Userdetails.class,4);
System.out.println("user name "+ user.getUsername());
}
}
this is model class:
this is model class:
package org.javab;
import javax.persistence.Embeddable;
@Embeddable
public class Address {
private String street;
private String city;
private String doorno;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDoorno() {
return doorno;
}
public void setDoorno(String doorno) {
this.doorno = doorno;
}
}
die andere Modellklasse usedeails ist das ist mein anderes Modell Klasse: Import java.util.HashSet; importieren Sie java.util.Set;Exception in thread "main" org.hibernate.exception.SQLGrammarException: ORA-00926: fehlende Werte Stichwort
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;
@Entity
public class Userdetails {
@Id
private int userid;
private String username;
private Address address;
@ElementCollection
@JoinTable(name="COLLECTION-TABLE")/*, [email protected](name="user_id"))*/
private Set<Address> collectionofaddr = new HashSet();
public Set<Address> getCollectionofaddr() {
return collectionofaddr;
}
public void setCollectionofaddr(Set<Address> collectionofaddr) {
this.collectionofaddr = collectionofaddr;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return "username from get"+username;
}
public void setUsername(String username) {
this.username = username;
}
}
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@xxx.corp.XXXX.com:1600/xxxxx</property>
<property name="connection.username">xxxx</property>
<property name="connection.password">xxxxxxxxr</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- Disable the second-level cache -->
<!-- <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> -->
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- Name the annotated Entity -->
<mapping class="org.javab.Userdetails"></mapping>
</session-factory>
</hibernate-configuration>
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.hibernate</groupId>
<artifactId>demo.hibernate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>this is name</name>
<description>this is descriprion</description>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.1.0.CR2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>
</project>
fnally my error message:
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hibernate: insert into Userdetails (city, doorno, street, username, userid) values (?, ?, ?, ?, ?)
Hibernate: insert into COLLECTION-TABLE (Userdetails_userid, city, doorno, street) values (?, ?, ?, ?)
Exception in thread "main" org.hibernate.exception.SQLGrammarException: ORA-00926: missing VALUES keyword
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at com.sun.proxy.$Proxy11.executeUpdate(Unknown Source)
at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1204)
at org.hibernate.action.internal.CollectionRecreateAction.execute(CollectionRecreateAction.java:58)
at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:272)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:264)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:190)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1081)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:315)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.javab.hibernate.Hibernatetest.main(Hibernatetest.java:42)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00926: missing VALUES keyword
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 15 more
bitte helfen Sie mir, diesen Fehler zu lösen ..getting einige fehlende Wert Schlüsselwörter. Hinweis: der Fehler wird erst nach
Lassen Sie mich raten, COLLECTION-TABLE ist der falsche Name der Tabelle? –
Wenn Sie den gleichen Fehler in einem minimalen Beispiel reproduzieren können, ist es viel wahrscheinlicher, dass Leute den Code lesen und den Fehler erkennen. :-) –
Site-Richtlinien erlauben es Benutzern nicht, Fragen zu vandalisieren, nicht einmal ihre eigenen: Ich habe die destruktive Bearbeitung zurückgerollt. – DSM