私のDAOレイヤーコードは次のとおりです。
package com.app.dao;
import javax.annotation.Resource;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.app.pojo.InterviewerPojo;
@Repository("interviewer_details_dao")
public class InterviewerDetailsDaoImpl implements InterviewerDetailsDao {
@Resource(name="sessionFactory")
private SessionFactory factory;
/*private HibernateTemplate template;
public void setSessionFactory(){
template = new HibernateTemplate(factory);
}*/
/*private HibernateTemplate template = new HibernateTemplate(sessionFactory);*/
@Override
public void saveInterviewDetails(InterviewerPojo interviewerPojo) {
/* Session sess = factory.getCurrentSession();
try{
sess.getTransaction().wasCommitted();
Transaction trans = sess.beginTransaction();
System.out.println("a");
sess.saveOrUpdate(interviewerPojo);
sess.getTransaction().commit();}
catch(Exception e){
throw e;
}*/
System.out.println("b");
factory.getCurrentSession().save(interviewerPojo);
/* System.out.println(interviewerPojo);
template.saveOrUpdate(interviewerPojo);
System.out.println("b");*/
System.out.println("done");
}
}
次のようにデータベースから値を取得している場合、上記と同じコードが実行されていました sessionFactory.getCurrentSession ().createQuery("select m from emp m.list ;ご覧のとおり、同じ概念を使用しており、上記のクエリでデータベースから取得した別の MODEL(pojo) によって MODEL(POJO) クラスを作成しました
org.hibernate.exception.SQLGrammarException: SQL 構文にエラーがあります。org.hibernate.engine の org.hibernate.exception.internal.SQLStateConverter.convert(SQLStateConverter.java:100) の 1 行目の「hibernate_sequence の値」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler の org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) の .jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) .continueInvocation(AbstractStatementProxyHandler.java:129) at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) at $Proxy24.executeQuery(Unknown Source) at org.hibernate.id.SequenceGenerator. 407) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) で org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) で org.apache.tomcat.util.net .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) で java.util.concurrent.ThreadPoolExecutor.runWorker (不明なソース) で java.util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) で java.lang.Thread.実行 (不明なソース) 原因: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SQL 構文にエラーがあります。sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect. の 1 行目の「hibernate_sequence の値」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
POJO ソースコード:
package com.app.pojo;
import java.io.Serializable;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity @Table(name="interviewer")
public class InterviewerPojo implements Serializable {
private int eid;
private int vid;
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
private int i_eid;
private String i_name;
private String password;
public int getEid() {
return eid;
}
public void setEid(int eid) {
this.eid = eid;
}
}
休止状態の設定:
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.formatsql">true</prop>
<prop key="hibernate.showsql">true</prop>
<prop key="hibernate.hbm2ddl.auto">validate</prop>
</props>
</property>