把jtable的改变写入数据库
来源:互联网 发布:霸业降级修为数据 编辑:程序博客网 时间:2024/06/05 03:36
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { entityManager.getTransaction().begin(); entityManager.clear(); Cxb c = cxbList.get(jTable1.getSelectedRow()); entityManager.merge(c); entityManager.getTransaction().commit(); jTable1.repaint(); }
eclipselink jpa2.0 是有L2缓存的。说是可以禁用掉,但是无论怎样都禁不掉。因为我做了这样的实验:
由于jtable和jList是绑定的,所以在jtable做的修改,回车后就进了jList。然后
cxbList.clear();
cxbList.addAll(cxbQuery.getResultList());
得到的也是修改后的数据,但是
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { cxbList.clear(); entityManager.clear(); entityManager.getEntityManagerFactory().getCache().evictAll(); cxbList.addAll(cxbQuery.getResultList()); jTable1.repaint(); }之后还是修改前的数据。由此可见缓存没有被禁用。当然也许L2缓存被禁了,L1的缓存没被禁。但transaction-type="RESOURCE_LOCAL"又规定了操作必须在会话中进行。L1也不可能被禁用。所以我基本不可能在table上修改,一回车就进了数据库。除非我调用键盘响应代替按钮,其实也一个意思。总之L2是否禁用都绕不开,那就用entityMagager老实处理吧。-----------2.14-------------又研究了几天发现tablemodel只有在会话中的那几个有改变的方法才会响应。前面的那些操作也许最后是卡在了tablemodel上。总之这么修改是对的。但不是我之前猜测的是缓存响应了merge,而是tablemodel响应了merge。谁知道呢,也许都响应了吧。ide封装了很多东西,一开始入手难免有点迷糊。相信最后会明白。
现在我终于知道entityMagager为啥要先clear,因为建立的时候,里面都被cxb实体塞满了。不清空就有重复。只是这样的代码真不优雅,refresh和flush基本废掉。
- 把jtable的改变写入数据库
- log4net把自定义的变量写入数据库
- 改变JTable一行的颜色
- 把图片写入数据库
- 把JTable的表头去掉
- 如何把数据库的内容写入到Word文档中
- 如何把数据库的内容写入到Word文档中?
- 利用log4j的JDBCAppender把日志写入数据库中
- 利用log4j的JDBCAppender把日志写入数据库中
- 把重要的业务日志异步批量写入数据库 LOG4J
- c#把图片以二进制的形式写入ACCESS数据库
- java把图片写入mysql数据库的代码
- OpenErp里面把readonly的值写入数据库
- laravel中把查询数据库的sql写入日志中
- 把数据通过C#写入数据库的模板
- 如何高效的把监控数据写入数据库
- 鼠标事件改变JTable的行高
- jTable选择的行改变事件
- Mac OS下常用Terminal命令
- LaTeX非主流技巧集锦
- Servlet规范 The Servlet Interface
- Drupal的相关邮件系统的配置
- Android中的线程处理
- 把jtable的改变写入数据库
- 删除grub引导记录(DiskGenius)
- GPIO的上拉下拉功能说明
- java集合类
- php中Cookie的设置与使用
- C primer plus第7章(C控制语句:分支和跳转)习题
- 九度OJ 题目1182:统计单词
- php里session的用法(超级经典)
- 纪念亡狗阿犬