execute是列出ext_money中的所有数据
insert是插入或者保存数据当单单执行(重启完tomcat不执行insert方法)execute的时候没有任何问题,数据不会出现改动但如果执行了一条修改操作,则再执行execute列出的数据就会出现不稳定状态,而这个不稳定就是修改的这条数据总会在原值与修改值之间改变,但数据库的值已经被改变我的数据库是mysql打印的相关日志:修改操作
{"money":1211,"id":"2"}
Hibernate: update test.ext_money set type=?, money=? where id=?连续再次刷新出现的不同值
Hibernate: select extmoney0_.id as id1_, extmoney0_.type as type1_, extmoney0_.money as money1_ from test.ext_money extmoney0_
[{"id":"1","money":91,"type":"支出"},{"id":"2","money":1211,"type":"收入"},{"id":"3","money":121,"type":"收入"},{"id":"4","money":113,"type":"支出"},{"id":"402880f92f5e3534012f5e357da20001","money":101,"type":"支出"},{"id":"402880f92f5e412f012f5e419b610001","money":12,"type":"收入"}]
Hibernate: select extmoney0_.id as id1_, extmoney0_.type as type1_, extmoney0_.money as money1_ from test.ext_money extmoney0_
[{"id":"1","money":91,"type":"支出"},{"id":"2","money":121,"type":"收入"},{"id":"3","money":121,"type":"收入"},{"id":"4","money":113,"type":"支出"},{"id":"402880f92f5e3534012f5e357da20001","money":101,"type":"支出"},{"id":"402880f92f5e412f012f5e419b610001","money":12,"type":"收入"}]public class Ch18 {
public void execute(HttpServletRequest request, HttpServletResponse response) throws TransformerException, IOException{
ExtMoneyDAO emd = new ExtMoneyDAO();
List list = emd.findAll();
JSONArray json = new JSONArray();
json.addAll(list);
System.out.println(json.toString());
String xml = new XMLSerializer().write(json);
//如何在jsp里面得到相对路径
InputStream is = request.getSession().getServletContext().getResourceAsStream("/extserver/array.xslt");
Source xmlSource = new StreamSource(new ByteArrayInputStream(xml.getBytes("utf-8")));//文件一定要用utf-8来读取
Source xsltSource = new StreamSource(is,"utf-8");//转的地方是包裹inputstream的地方,而不是inputstream
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);
trans.transform(xmlSource, new StreamResult(response.getWriter()));
}
public void insert(HttpServletRequest request, HttpServletResponse response) throws Exception{
ExtMoneyDAO emd = new ExtMoneyDAO();
String content = Nehnre.decode(request.getParameter("content"));
System.out.println(content);
JSONArray arr = JSONArray.fromObject(content);
System.out.println(arr.toString());
JSONObject json = null;
ExtMoney em = null;
ExtMoney orEm = null;
for(int i=0;i<arr.size();i++){
json = arr.getJSONObject(i);
System.out.println(json.toString());
em = (ExtMoney)JSONObject.toBean(json, ExtMoney.class);
if(em.getId() != null && !"".equals(em.getId())){
orEm = emd.findById(em.getId());
if(em.getMoney() != null){
orEm.setMoney(em.getMoney());
}
if(em.getType() != null){
orEm.setType(em.getType());
}
} else {
orEm = em;
}
Transaction tx = emd.getSession().beginTransaction();
emd.save(orEm);
emd.getSession().flush();
tx.commit();
}
emd.getSession().close();
}
}
insert是插入或者保存数据当单单执行(重启完tomcat不执行insert方法)execute的时候没有任何问题,数据不会出现改动但如果执行了一条修改操作,则再执行execute列出的数据就会出现不稳定状态,而这个不稳定就是修改的这条数据总会在原值与修改值之间改变,但数据库的值已经被改变我的数据库是mysql打印的相关日志:修改操作
{"money":1211,"id":"2"}
Hibernate: update test.ext_money set type=?, money=? where id=?连续再次刷新出现的不同值
Hibernate: select extmoney0_.id as id1_, extmoney0_.type as type1_, extmoney0_.money as money1_ from test.ext_money extmoney0_
[{"id":"1","money":91,"type":"支出"},{"id":"2","money":1211,"type":"收入"},{"id":"3","money":121,"type":"收入"},{"id":"4","money":113,"type":"支出"},{"id":"402880f92f5e3534012f5e357da20001","money":101,"type":"支出"},{"id":"402880f92f5e412f012f5e419b610001","money":12,"type":"收入"}]
Hibernate: select extmoney0_.id as id1_, extmoney0_.type as type1_, extmoney0_.money as money1_ from test.ext_money extmoney0_
[{"id":"1","money":91,"type":"支出"},{"id":"2","money":121,"type":"收入"},{"id":"3","money":121,"type":"收入"},{"id":"4","money":113,"type":"支出"},{"id":"402880f92f5e3534012f5e357da20001","money":101,"type":"支出"},{"id":"402880f92f5e412f012f5e419b610001","money":12,"type":"收入"}]public class Ch18 {
public void execute(HttpServletRequest request, HttpServletResponse response) throws TransformerException, IOException{
ExtMoneyDAO emd = new ExtMoneyDAO();
List list = emd.findAll();
JSONArray json = new JSONArray();
json.addAll(list);
System.out.println(json.toString());
String xml = new XMLSerializer().write(json);
//如何在jsp里面得到相对路径
InputStream is = request.getSession().getServletContext().getResourceAsStream("/extserver/array.xslt");
Source xmlSource = new StreamSource(new ByteArrayInputStream(xml.getBytes("utf-8")));//文件一定要用utf-8来读取
Source xsltSource = new StreamSource(is,"utf-8");//转的地方是包裹inputstream的地方,而不是inputstream
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);
trans.transform(xmlSource, new StreamResult(response.getWriter()));
}
public void insert(HttpServletRequest request, HttpServletResponse response) throws Exception{
ExtMoneyDAO emd = new ExtMoneyDAO();
String content = Nehnre.decode(request.getParameter("content"));
System.out.println(content);
JSONArray arr = JSONArray.fromObject(content);
System.out.println(arr.toString());
JSONObject json = null;
ExtMoney em = null;
ExtMoney orEm = null;
for(int i=0;i<arr.size();i++){
json = arr.getJSONObject(i);
System.out.println(json.toString());
em = (ExtMoney)JSONObject.toBean(json, ExtMoney.class);
if(em.getId() != null && !"".equals(em.getId())){
orEm = emd.findById(em.getId());
if(em.getMoney() != null){
orEm.setMoney(em.getMoney());
}
if(em.getType() != null){
orEm.setType(em.getType());
}
} else {
orEm = em;
}
Transaction tx = emd.getSession().beginTransaction();
emd.save(orEm);
emd.getSession().flush();
tx.commit();
}
emd.getSession().close();
}
}
解决方案 »
- hibernate一对多多对一问题
- servlet:No buffer space available
- ERROR [ExternalService] Error sending message (mex={PartnerRoleMex#hqejbhcnphr7
- 用DWR框架是不是必须用Hibernate框架?
- 怎么让jtextarea一行一行显示!
- 新手请教struts2
- Spring+Hibernate 多表查询
- hibernate.hbm.xml异常
- 有用过commons-fileupload.jar的吗?我现在可以上传但是我在List fileItems = sevletFileUpload.parseRequest(request);之前加了一个得到
- 回顾经典--EJB3.0 上
- FireFox下怪异的jQuery问题
- Oracle问题:Your username and/or password are invalid.
另外,楼主所说的修改方法是不是insert?
出现脏读了楼主执行完insert后你得更新缓存呀,楼主得好好研究下缓存
session.flush();
我insert完后已经flush过了
这个可以看一看
默认在事务提交时(commit)
显示的调用flush
在执行查询前,如:iterate