をコミットしていないし、WebLogic 10.3.6SessionFactoryのHibernateは私がオラクル、4休止状態、Spring MVCの3.2.6で動作するOracleデータベース
私は、OracleデータベースにHibernateとJPAを使用してエンティティをコミットします。サーバーコンソールでエラーは表示されません。しかし、Oracleテーブルをチェックすると、新しいレコードは記録されません。
これはAdministrationService.java.IはメソッドcreatePreferenciaを使用
package eusurvey.modelA.daos;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the PREFERENCIAS database table.
*
*/
@Entity
@Table(name="PREFERENCIAS")
public class Preferencia implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="PREFERENCIAS_ID")
private long preferenciasId;
private String nombre;
private String valor;
public Preferencia() {
}
public long getPreferenciasId() {
return this.preferenciasId;
}
public void setPreferenciasId(long preferenciasId) {
this.preferenciasId = preferenciasId;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getValor() {
return this.valor;
}
public void setValor(String valor) {
this.valor = valor;
}
}
サービスクラス私のJPAエンティティです。
package eusurvey.services;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.apache.log4j.Logger;
import eusurvey.modelA.daos.EncuestaSem;
import eusurvey.modelA.daos.Encuestado;
import eusurvey.modelA.daos.Preferencia;
import eusurvey.tools.ConversionTools;
@Service("administrationService")
public class AdministrationService {
private static final Logger logger = Logger.getLogger(AdministrationService.class);
@Resource(name="sessionFactory")
private SessionFactory sessionFactory;
@Transactional
public void createEncuestado(Encuestado encuestado) throws Exception {
Session session = sessionFactory.getCurrentSession();
session.save(encuestado);
}
@Transactional(readOnly = false)
public void createEncuesta(EncuestaSem encuesta) throws Exception {
Session session = sessionFactory.getCurrentSession();
logger.info("fecha inicio "+encuesta.getFechaInicio());
session.save(encuesta);
logger.info("Grabada encuesta");
}
@Transactional(readOnly = false)
public void createPreferencia(Preferencia preferencia) throws Exception {
Session session = sessionFactory.getCurrentSession();
session.save(preferencia);
logger.info("Grabada prefencia");
}
}
私はcreatePreferenciaメソッドを呼び出すJavaは
administrationService.createPreferencia(preferencia);
Consoleサーバー・メッセージはどのようにSQL文を確認することができます
04:46 DEBUG SQL:104 - select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
2016-07-05 14:04:46 DEBUG SequenceGenerator:128 - Sequence identifier generated: BasicHolder[java.lang.Long[1404]]
2016-07-05 14:04:46 DEBUG AbstractSaveEventListener:131 - Generated identifier: 1404, using strategy: org.hibernate.id.SequenceGenerator
2016-07-05 14:04:46 INFO AdministrationService:60 - Grabada prefencia
2016-07-05 14:04:46 INFO ConsultasArielService:213 - despues de commit preferencia
2016-07-05 14:04:46 DEBUG AbstractTransactionImpl:173 - committing
2016-07-05 14:04:46 DEBUG JdbcTransaction:113 - committed JDBC Connection
2016-07-05 14:04:46 DEBUG JdbcTransaction:126 - re-enabling autocommit
2016-07-05 14:04:46 DEBUG LogicalConnectionImpl:314 - Releasing JDBC connection
2016-07-05 14:04:46 DEBUG LogicalConnectionImpl:332 - Released JDBC connection
2016-07-05 14:04:46 DEBUG ConnectionProxyHandler:219 - HHH000163: Logical connection releasing its physical connection
2016-07-05 14:04:46 DEBUG ConnectionProxyHandler:219 - HHH000163: Logical connection releasing its physical connection
2016-07-05 14:04:46 DEBUG ConnectionProxyHandler:219 - HHH000163: Logical connection releasing its physical connection
2016-07-05 14:04:46 DEBUG ConnectionProxyHandler:219 - HHH000163: Logical connection releasing its physical connection
2016-07-05 14:04:46 INFO EncuestaController:92 - EncuestaControler despues de grabas encuesta
ありますか?あなたが<tx:annotation-driven/>
を使用する場合は
出力SQLを取得したり、設定を有効にするために 'org.hibernate.SQL'にTRACEレベルのログを有効にするだけです。' hibernate.show_sql = true'を有効にしてください。さらに、データベース接続設定が正しいこと、およびデータベース参照ツールで検査しているのと同じデータベースを使用していることを確認します。 – Naros
私はすでにhibernate.show_sql = trueを持っています。私は他のSQLを見ることができます。しかし、私はsession.save(preferencia)sqlが表示されません。この命令はSQL命令を生成しますか? – user3712581
'insert'文を生成するはずです。私はシーケンス識別子があなたのログにpingされているのを見ますが、 '@ Transactional'によって生成されたトランザクションによって現在のセッションが束縛されていないかのように動作します。 grinsについては、 '@ Transactional'アノテーションを削除し、あなたのメソッドの中であなたのコードを' session.getTransaction()。begin();で囲みます。/*あなたのものをする* /; session.getTransaction()。commit(); 'それがうまくいけば、' SessionFactory'とトランザクション管理アノテーションの間のトランザクション境界配線問題です。 – Naros