如何解决 MyBatis selectForUpdate 中的 indexOutOfBounds 错误?
How to solve indexOutOfBounds error in MyBatis selectForUpdate?
我使用 postgreSQL。这是我在 myBatisMapper 中的请求:
<select id="findByStatusAndIdentityAndPrvCode" parameterType="java.lang.String" resultMap="Request">
select
from req_tab
where status in ('I', 'D', 'Q')
and identity = #{identity}
and prv_code = #{prvCode}
limit 1 for update
</select>
这是我的错误:
org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
The error may exist in ru/infogate/dao/mapper/ReqMapper.xml
The error may involve ru.infogate.dao.mapper.ReqMapper.findByStatusAndIdentityAndPrvCode
The error occurred while handling results
SQL: select from req_tab where status in ('I', 'D', 'Q') and identity = ? and prv_code = ? limit 1 for update
Cause: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
什么原因,如何解决?
我解决了这个问题。只需要将 allArgs 构造函数添加到我的实体
我在使用mysql时遇到同样的错误。但是我通过同时添加 NoArgsConstructor 和 AllArgsConstructor 解决了这个问题。我使用 lombok 的 @Builder 但错过了构造函数注释。
错误日志显示的消息太少,无法找到它。
您可以通过添加不带参数的构造函数以及带参数的构造函数来修复
//Add Constructor with no arguments to fix this error
public UserAdmin() {
}
//Along side the constructor with arguments
public UserAdmin(String username, String password, String email, Date date_created, Date date_expired) {
this.username = username;
this.password = password;
this.email = email;
this.date_created = date_created;
this.date_expired = date_expired;
}
我使用 postgreSQL。这是我在 myBatisMapper 中的请求:
<select id="findByStatusAndIdentityAndPrvCode" parameterType="java.lang.String" resultMap="Request">
select
from req_tab
where status in ('I', 'D', 'Q')
and identity = #{identity}
and prv_code = #{prvCode}
limit 1 for update
</select>
这是我的错误:
org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
The error may exist in ru/infogate/dao/mapper/ReqMapper.xml
The error may involve ru.infogate.dao.mapper.ReqMapper.findByStatusAndIdentityAndPrvCode
The error occurred while handling results
SQL: select from req_tab where status in ('I', 'D', 'Q') and identity = ? and prv_code = ? limit 1 for update
Cause: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
什么原因,如何解决?
我解决了这个问题。只需要将 allArgs 构造函数添加到我的实体
我在使用mysql时遇到同样的错误。但是我通过同时添加 NoArgsConstructor 和 AllArgsConstructor 解决了这个问题。我使用 lombok 的 @Builder 但错过了构造函数注释。 错误日志显示的消息太少,无法找到它。
您可以通过添加不带参数的构造函数以及带参数的构造函数来修复
//Add Constructor with no arguments to fix this error
public UserAdmin() {
}
//Along side the constructor with arguments
public UserAdmin(String username, String password, String email, Date date_created, Date date_expired) {
this.username = username;
this.password = password;
this.email = email;
this.date_created = date_created;
this.date_expired = date_expired;
}