Bu @NamedNativeQuery@NamedNativeQuery Kısıtlama ihlali - İşlem
@NamedNativeQuery(name = "Certificacion.updateCertificacionAclaraciones", query = "UPDATE CERTIFICACION "
+ "SET PENDIENTE_GENERACION = :pendienteGeneracion, ID_ACLARACIONES_TEMP_ESCRITO = :idAclaracion "
+ "WHERE ID IN (:paso)")
var Ve O guardarRequerimiento
yöntem ama sona erdiğinde ben taahhüt çalıştırır varsayalım
@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();
}
}
Bir işlem almak için bu EJB yapıya sahip nativeQuery
'u executeUpdate
ile yürüttüğümde ConstraintViolation
istisnası varorg.hibernate.exception.ConstraintViolationException: Ben
findAclaracion.getId()
işlemde mevcut olmasına rağmen, bu veritabanında yok çünkü olduğunu düşünüyorum veexecuteUpdate
bu nesne veritabanında mevcut olduğunu ihtiyacımız deyimi
yürütmek could çünkü yürütürken kalıcılık bağlamında değil.
Bu davranışı neden alıyorum? Nasıl çözebilirim?
Teşekkür ederiz.
Zaten, ben bir geri alma yapmaya çalışacağım çünkü executeUpdate actualizaCertificacionesAclaracion bir istisna ama O değil etkiye sahip olursa dışında bir floş herşey yolunda yaptığınızda O DB içinde. Diğer taraftan, eğer bir floş yapmazsam, yazımda söylediğim gibi ConstraintViolation alıyorum. –