0
프로 시저를 호출 한 후 프로 시저를 호출하여 변경된 개체를 찾기 위해 검색하지만 값이 이미 변경된 대신 동일한 값으로 변경했습니다 데이터베이스에.오라클 및 Seam 트랜잭션 문제
가@Begin(join=true, flushMode=FlushModeType.COMMIT)
public String validarArquivo() throws Exception
{
if(arquivoImportacaoId != null)
{
importarArquivoTransacaoBusiness.validarArquivo(arquivoImportacaoId, seamSession.getIdUsuario());
arquivoImportacaoId = null;
}
//buscarArquivosImportacao();
statusValidaArquivo = 1;
return "sucesso";
}
가 DAO :이 Methos는이 호출
em.createNativeQuery("{call PRC_PROCESSAR_ARQUIVO (" + arquivoImportacaoId + ", " + UsuarioId + ") }").executeUpdate();
em.flush();
em.joinTransaction();
DAO를 실행 후 :
@In(create = true)
EntityManager em;
public List<ArquivoImportacao> buscarArquivoTransacao(ImportarArquivoTransacaoForm importarArquivoTransacaoForm) throws Exception{
em.flush();
em.joinTransaction();
List<ArquivoImportacao> lstArquivoImportacao = new ArrayList<ArquivoImportacao>();
StringBuilder strQuery = new StringBuilder();
strQuery.append("select a from ArquivoImportacao a where 1=1 ");
strQuery.append("and a.status <> 'CAN' ");
if(importarArquivoTransacaoForm != null)
{
if (importarArquivoTransacaoForm.getIdArquivo() != null)
strQuery.append("and a.idImportacao = :idImportacao ");
if (importarArquivoTransacaoForm.getLote() != null)
strQuery.append("and a.numeroLote = :pNumeroLote ");
if (importarArquivoTransacaoForm.getNomeArquivo() != null && !importarArquivoTransacaoForm.getNomeArquivo().trim().equals(""))
strQuery.append("and lower(a.nomeArquivo) like lower(:pNomeArquivo) ");
if (importarArquivoTransacaoForm.getCnpj() != null && !Util.clearNumber(importarArquivoTransacaoForm.getCnpj()).equals(""))
strQuery.append("and a.cliente.cnpj = :pCnpj ");
if (importarArquivoTransacaoForm.getDataProcessamento() != null)
strQuery.append("and a.dataProcessamento >= :pDataProcessamento ");
if (importarArquivoTransacaoForm.getDataProcessamentoAte() != null)
strQuery.append("and a.dataProcessamento < :pDataProcessamentoAte ");
if (importarArquivoTransacaoForm.getStatus() != null && !importarArquivoTransacaoForm.getStatus().equals(""))
strQuery.append("and a.status = :pStatus ");
//ordenação da query
strQuery.append("order by a.numeroLote");
Query query = em.createQuery(strQuery.toString());
if (importarArquivoTransacaoForm.getIdArquivo() != null)
query.setParameter("idImportacao", importarArquivoTransacaoForm.getIdArquivo());
if (importarArquivoTransacaoForm.getLote() != null)
query.setParameter("pNumeroLote", importarArquivoTransacaoForm.getLote());
if (importarArquivoTransacaoForm.getNomeArquivo() != null && !importarArquivoTransacaoForm.getNomeArquivo().trim().equals(""))
query.setParameter("pNomeArquivo", "%" + importarArquivoTransacaoForm.getNomeArquivo() + "%");
if (importarArquivoTransacaoForm.getCnpj() != null && !Util.clearNumber(importarArquivoTransacaoForm.getCnpj()).equals(""))
query.setParameter("pCnpj", Util.clearNumber(importarArquivoTransacaoForm.getCnpj()));
if (importarArquivoTransacaoForm.getDataProcessamento() != null)
query.setParameter("pDataProcessamento", importarArquivoTransacaoForm.getDataProcessamento());
if (importarArquivoTransacaoForm.getDataProcessamentoAte() != null)
{
Calendar cal = Calendar.getInstance();
cal.setTime(importarArquivoTransacaoForm.getDataProcessamentoAte());
cal.add(Calendar.DAY_OF_MONTH, 1); //Adiciona Um dia
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
query.setParameter("pDataProcessamentoAte", cal.getTime());
}
if (importarArquivoTransacaoForm.getStatus() != null && !importarArquivoTransacaoForm.getStatus().equals(""))
query.setParameter("pStatus", importarArquivoTransacaoForm.getStatus());
lstArquivoImportacao = query.getResultList();
}
else
{
strQuery.append("order by a.numeroLote");
Query query = em.createQuery(strQuery.toString());
lstArquivoImportacao = query.getResultList();
}
return lstArquivoImportacao;
}
하지만 값이 변경되지
내 제어기는 변경 값을받을 , 내가 검색 방법을 호출 버튼에 "propagation : none"태그를 넣으면 값이 변경된 것을 볼 수 있지만 양식에서 매개 변수를 잃어 버렸습니다.
누군가가 단서가 있습니까?
나는 많은 곳에서 엔티티 관리자를 플러시 및 거래 유형을 변경하려고했지만 값은 전파 = "없음"