当前使用版本(必须填写清楚,否则不予处理)

3.1.1

该问题是怎么引起的?(最新版上已修复的会直接close掉)

AccFamilyDO accFamilyDO = accFamilyDao.selectOne(new QueryWrapper() .eq("id",1L)); System.out.println(JacksonUtil.nonEmptyMapper().toJson(accFamilyDO)); 以上代码执行没有问题。

但是

AccFamilyDO accFamilyDO = accFamilyDao.selectOne(new QueryWrapper() .select("id") .eq("id",1L)); System.out.println(JacksonUtil.nonEmptyMapper().toJson(accFamilyDO)); 指定查询的字段之后就报错

重现步骤

报错信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

The error may exist in com/dlxiaojia/dao/account/AccFamilyDao.java (best guess)

The error may involve com.dlxiaojia.dao.account.AccFamilyDao.selectOne

The error occurred while handling results

SQL: SELECT id FROM acc_family WHERE id = ?

Cause: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

Comment From: miemieYaho

请给出你的复现demo

Comment From: aizhimin

AccFamilyDO accFamilyDO = accFamilyDao.selectOne(new QueryWrapper() .select("id") .eq("id",1L)); System.out.println(JacksonUtil.nonEmptyMapper().toJson(accFamilyDO));

以上方式就会出现问题。 你要整个工程?

Comment From: aizhimin

上诉代码出现的问题: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

The error may exist in com/dlxiaojia/dao/account/AccFamilyDao.java (best guess)

The error may involve com.dlxiaojia.dao.account.AccFamilyDao.selectOne

The error occurred while handling results

SQL: SELECT id FROM acc_family WHERE id = ?

Cause: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

Comment From: aizhimin

AccFamilyDO accFamilyDO = accFamilyDao.selectOne(new QueryWrapper() .eq("id",1L)); System.out.println(JacksonUtil.nonEmptyMapper().toJson(accFamilyDO));

我去掉select,就可以正确返回。

==> Preparing: SELECT id,owner_id,family_name,description,cover,invite_code,gmt_create,gmt_modified FROM acc_family WHERE id = ? ==> Parameters: 1(Long) <== Columns: id, owner_id, family_name, description, cover, invite_code, gmt_create, gmt_modified <== Row: 1, 1, Dajavu的小家, 幸福来自于对生活的记录, http://1213.jpg, 123456, 2019-06-03 17:15:16.0, 2019-06-17 17:46:58.0 <== Total: 1

Comment From: miemieYaho

你举得例子我们无法复现

Comment From: aizhimin

我找到问题了。是lombok版本问题。 lombok我用的版本:1.18.0就会出现这个问题。你们可以试试。

@Data @Builder @TableName("acc_family") public class AccFamilyDO {

private Long id;
private Long ownerId;//家庭创建者ID
private String familyName;//家庭名称
private String description;//家庭签名
private String cover;//家庭封面
private String inviteCode;//邀请码
private Date gmtCreate;//创建时间
private Date gmtModified;//最后更新时间

}

用1.16.22的lombok版本才正常。

我觉得你们也可以考虑一下优化。

Comment From: cherry77

我也是遇到这个问题了,是可以考虑优化下了