看我页面和相应代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
收件人:/s:label | listValue="bjiRealName" value="ids" theme="simple" > /s:if/s:checkboxlist |
主 题:/s:label | /s:textfield |
内 容:/s:label | |
/s:submit |
保存方法代码
public String expSaveMessage()throws Exception{
String[] bjilist = getBjilist();
Message m = new Message();
lastreadTime = m.getLastreadTime();
if(lastreadTime==null){
lastreadTime = "未读";
}
sendTime = new Date();
for (int i = 0; i < bjilist.length; i++) {
receiveName = bjilist[i];
// System.out.println("*&*&*&&+========"+receiveName);
// BjilistByReveiveid = ids[i];
m.setReceiveName(receiveName);
m.setExpertlistBySendid(ExpertlistBySendid);
m.setSendflag(sendflag);
m.setReceiveflag(receiveflag);
m.setReceiveName(receiveName);
m.setSendName(sendName);
m.setMessage(message);
m.setSendTime(sendTime);
m.setLastreadTime(lastreadTime);
m.setSubjectTitle(subjectTitle);
messageService.save(m);
}
return SUCCESS;
}
没有错误错误但是执行完以后
有两个接受人的话,
只增加一次 insert
第二次是就是 update 修改哪一行数据:这是怎么回事呀
改成如下形式,因为你每回都是在一个对象上进行的修改,造成第一次insert,后面的都是update。所以你需要在for循环中新建Message对象。
[code="java"]
public String expSaveMessage()throws Exception{
String[] bjilist = getBjilist();
lastreadTime = m.getLastreadTime();
if(lastreadTime==null){
lastreadTime = "未读";
}
Message m = null;
sendTime = new Date();
for (int i = 0; i < bjilist.length; i++) {
m = new Message();
receiveName = bjilist[i];
m.setReceiveName(receiveName);
m.setExpertlistBySendid(ExpertlistBySendid);
m.setSendflag(sendflag);
m.setReceiveflag(receiveflag);
m.setReceiveName(receiveName);
m.setSendName(sendName);
m.setMessage(message);
m.setSendTime(sendTime);
m.setLastreadTime(lastreadTime);
m.setSubjectTitle(subjectTitle);
messageService.save(m);
}
return SUCCESS;
}
[/code]
事务的问题吧.我也正为这个烦着呢.
保存时你只new了一个Message对象,第一次save后m就存在于hibernate的缓存中做为持久化对象,第二次循环时hibernate会认为是对m的修改,你可以把new放for循环里面,应该就没有问题了。