私はこの@NamedNativeQuery@NamedNativeQuery制約違反 - トランザクション
@NamedNativeQuery(name = "Certificacion.updateCertificacionAclaraciones", query = "UPDATE CERTIFICACION "
+ "SET PENDIENTE_GENERACION = :pendienteGeneracion, ID_ACLARACIONES_TEMP_ESCRITO = :idAclaracion "
+ "WHERE ID IN (:paso)")
を持っていると私はそれは私がguardarRequerimiento
方法がなく、終了時にコミット実行されることを想定
@TransactionManagement(TransactionManagementType.CONTAINER)
@Stateless
public class PRequerimientoCCServiceBean implements
IPRequerimientoCCServiceBeanLocal {
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void guardarRequerimiento(Usuario usuario,
ConjuntoCertificaciones conjunto, String aclaracionGeneral,
Map<Long, String> mapAclaracionColegio) throws RollbackException {
try {
// Realizamos el guardado de las aclaraciones y la generación del
// documento
AclaracionesTempEscrito currentAclaracion = new AclaracionesTempEscrito();
...
entityManager.persist(currentAclaracion);
generarDocumento(currentAclaracion, conjunto, usuario);
} catch (Exception e) {
ejbContext.setRollbackOnly();
throw new RollbackSajgException();
}
}
@TransactionAttribute(TransactionAttributeType.MANDATORY)
private void generarDocumento(AclaracionesTempEscrito findAclaracion,
ConjuntoCertificaciones conjunto, Usuario usuario)
throws RollbackException {
...
Query actualizaCertificacionesAclaracion = entityManager
.createNamedQuery("Certificacion.updateCertificacionAclaraciones");
actualizaCertificacionesAclaracion
.setParameter("pendienteGeneracion", true)
.setParameter("idAclaracion", findAclaracion.getId())
.setParameter("paso", paso).executeUpdate();
}
}
取引を取得するには、このEJB構造を持っていますnativeQuery
をexecuteUpdate
と実行すると例外が発生します。ConstraintViolation
org.hibernate.exception.ConstraintViolationException:ない 文
を実行することができ、私はfindAclaracion.getId()
がトランザクションに存在するが、それはデータベースに存在しないとexecuteUpdate
は、このオブジェクトがデータベースに存在することを必要とするので、それがあると思います実行時の永続コンテキストにはないためです。
この現象はなぜ発生しますか?どうすれば解決できますか?
ありがとうございます。
私はすでに、私はロールバックを行うにしようとするためのexecuteUpdate actualizaCertificacionesAclaracionが例外をスローしかし、それはない効果を持っている場合を除き、フラッシュすべてがうまくありません場合はそれDBにあります。他の手で私がフラッシュをしない場合、私は私の投稿で言うようにConstraintViolationを取得します。 –