I am doing a project in Hibernate and Spring. I am being stuck into a code as below as follows :
userTransactionRepository is a repository for user_transaction table and it has been injected in the method call.
@Transactional
public synchronized void method() {
try {
Iterable<UserTransaction> balances2 = userTransactionRepository.findAll
(UserTransactionPredicate.getCurrentBalance(cancelUserId), UserTransactionPredicate.orderByCreatedAtDesc());
//got error of 'xxx' cannot be null (MysqlIntegrityViolationException)
int count2 = 0;
for (UserTransaction userTransaction2 : balances2) {
if (count2 > 0) {
userTransaction2.setActive(false);
userTransactionRepository.saveAndFlush(userTransaction2);
}
count2++;
}
} catch (Exception e) {
System.out.println(e.getCause());
}
}
UserTransaction.java
@Entity
@Table(name = "user_transaction")
@NamedQuery(name="UserTransaction.getUserCurrentBalance",query="from UserTransaction ut, User u WHERE ut.user.id=u.id AND u.id=:userId AND ut.active=1 ORDER BY u.createdAt", lockMode=LockModeType.PESSIMISTIC_READ)
public class UserTransaction extends Auditable {
}
While calling method(), I got below error as follows :
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'operator_id' cannot be null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2459)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2376)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2360)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:187)
... 123 more
I hope lockMode in the above declaration has any influence for the MysqlIntegrityException. What may be the solution guys... Any alternate way also warmly welcome ?
Aucun commentaire:
Enregistrer un commentaire