ArrayList总是添加相同的Element

最近状态不好啊,总是晕晕的,写的东西出了问题,艾玛好桑心。

     错误:之前把下面msg的定义放循环外面了,然后每次添加到m里的都是查到的最后一个Message。

     对于基本类型是值传递,非基本类型传的是引用。如果不每次new一个对象,则每次都是把同一个引用放进去,而这些引用都指向相同的对象,所以放进去的值都相同,就都是最后一次修改的值了。

<span style="white-space:pre">		</span>       ArrayList<Message> m = new ArrayList<Message>();	
<span style="white-space:pre">		</span>       while(item.hasNext()){
				pstmt.setLong(1, gid = item.next());
				res = pstmt.executeQuery();
				while(res.next()){
					 <span style="color:#ff6600;">Message msg = new Message();</span>
					 msg.setMessageid(res.getLong("messageid"));
					 msg.setMessagetitle(res.getString("messagetitle"));
					 msg.setContentid(res.getLong("contentid"));
					 msg.setCreatetime(res.getTimestamp("createtime"));
					 msg.setDeletetime(res.getTimestamp("deletetime"));
					 msg.setGroupid(gid);
					 msg.setIscomment(res.getBoolean("iscomment"));
					 msg.setIsremind(res.getBoolean("isremind"));
					 msg.setRemindtime(res.getTimestamp("remindtime"));
					 msg.setIsvalue(res.getBoolean("isvalue"));
					 m.add(msg);
				}
			}

另外,数据库中放createtime字段是timestamp类型的默认值值为CURRENT_TIMESTAMP,modle中的Message类的createtime是java.uitl.Date。

而deletetime的默认值为'0000-00-00 00:00:00',运行有如下异常:

Cause: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
; SQL []; Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp; nested exception is java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

解决办法是给jdbc url加上 zeroDateTimeBehavior参数:

datasource.url=jdbc:mysql://localhost:3306/MPS?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true

zeroDateTimeBehavior=round是为了指定MySql中的DateTime字段默认值查询时的处理方式,它默认是抛出异常的。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值