Hibernate делает вставку без причиныJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Hibernate делает вставку без причины

Сообщение Anonymous »

Я новичок в JAVA Hibernate и Spring, и у меня возникла проблема, я был бы очень признателен, если бы вы мне помогли.
Я объясню.
  • У меня есть приложение, в котором есть почтовый ящик, в котором перечислены все сообщения от
    текущего пользователя.
  • Затем у меня есть форма для вставки новых сообщений в базу данных, что оно
    и делает все правильно.
  • После того, как вы отправите эту форму и создадите новое сообщение, контроллер
    вернет вас на индексную страницу, где снова перечислены все сообщения.
    Но когда вы обновляете страницу, спящий режим делает еще одну вставку в
    базу данных, без отправки еще одной формы «нового сообщения», просто делает
    еще одну вставку, когда я обновляю индексную страницу...
Я думаю, возможно, это потому, что спящий режим не закрывает соединение с базой данных должным образом, я не знаю.
Я покажу вам функции, которые я использую ниже:
Я использую функцию "enviarMensaje()" в делегате, который он вызывает функции:
enviarMensaje() (чтобы сохранить объект сообщения в базе данных)

и guardarMensajesDestinatario() (чтобы сохранить
несколько объектов получателей в базе данных)
это потому, что у сообщения много получателей, поэтому у меня есть две таблицы для этого.
вот код:
ФУНКЦИЯ ДЕЛЕГИРОВАНИЯ
public String enviarMensaje(String[] mensajesDestinatariosStr, MenMensajes mensaje) {

boolean respuesta=false;
String strRespuesta = "error al enviar el mensaje";
ArrayList destinatariosList=null;
//MenMensajesDestinatarios md=null;
try{
respuesta=mensajesDAO.enviarMensaje(mensaje);

for(String destinatarioStr : mensajesDestinatariosStr){
MenMensajesDestinatarios md=new MenMensajesDestinatarios();
System.out.println(destinatarioStr);
BigDecimal usuarioIdNumber=new BigDecimal(Integer.parseInt(destinatarioStr));
md.setUsuarioId(usuarioIdNumber);
md.setFechaCreacion(mensaje.getFechaCreacion());
md.setModificadoPor(mensaje.getModificadoPor());
md.setCreadoPor(usuarioIdNumber);
md.setMenMensajes(mensaje);
md.setEstado(mensaje.getEstado());
mensajesDAO.guardarMensajesDestinatario(md);

}

if (respuesta) {
strRespuesta = "El mensaje ha sido eviado con exito";
}
}catch(Exception e){
e.printStackTrace();
e.getMessage();
}

return strRespuesta;
}

ФУНКЦИИ DAO
public boolean enviarMensaje(MenMensajes mensaje){
Session session = null;
boolean exito=false;
Transaction trx=null;
try{
session = sessionFactoryHestia.openSession();
trx=session.beginTransaction();
session.saveOrUpdate(mensaje);
trx.commit();
session.flush();
exito=true;
}catch(Exception e){
System.out.println("Error guardando datos");
e.printStackTrace();
trx.rollback();
session.close();
}
return exito;
}

public void guardarMensajesDestinatario(MenMensajesDestinatarios md) {
Session session=null;
Transaction trx=null;
try{
session = sessionFactoryHestia.openSession();
trx=session.beginTransaction();
session.saveOrUpdate(md);
trx.commit();
session.flush();

}catch(Exception e){
e.printStackTrace();
e.getMessage();
}finally{
session.close();
}
}
< /code>
и на случай, если контроллер < /p>
@RequestMapping(value = "enviarMensaje.htm")
public String enviarMensaje(HttpSession session, @Valid @ModelAttribute("menMensaje") MenMensajes mensaje,
BindingResult result, ModelMap modelMap, HttpServletRequest request) {
Integer intOpcion = 1;
AppUsuarios user = (AppUsuarios) session.getAttribute("usuarioVO");//usuario de la sesion
BigDecimal usuarioId = user.getUsuarioId();//guardar el id del usuario de la sesion para pasarlo como parametro
String[] mensajesDestinatarios = request.getParameterValues("destinatarios");

try {

String respuesta = mensajesDelegate.enviarMensaje(mensajesDestinatarios, mensaje);

modelMap.addAttribute("mensajes", mensajesDelegate.listarMensajesTodos(usuarioId, intOpcion));
modelMap.addAttribute("opcion", intOpcion);
modelMap.addAttribute("menMensaje", mensajesDelegate.cargarMensaje(usuarioId, null)); //pasarle un objeto MenMensajes al formulario de nuevo mensaje que esta oculto en un modal.
modelMap.addAttribute("cboUsuarios", mensajesDelegate.cargarUsuarios()); //pasarle la lista de usuarios de la BD para combo de nuevo mensaje
modelMap.addAttribute("cboTiposMensaje", mensajesDelegate.cargarTiposMensaje()); //pasarle la lista de tipos de mensaje de la BD para el combo de nuevo mensaje
} catch (Exception e) {
System.out.println("Error en nuevoMensaje.htm");
}
return "/mensajes/index";
}


Подробнее здесь: https://stackoverflow.com/questions/337 ... out-reason
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»