У меня есть следующий код в нашем классе действий Struts:код Toplink не обновляет Все поля
clerkReviewDao.transaction(clerkReviewCaseRecipient,
new TransactionBlock<ClerkReviewCaseRecipient>() {
public void merge(
ClerkReviewCaseRecipient detached,
ClerkReviewCaseRecipient managed) {
managed.setNotify("Y");
managed.setSysDttm(new Date());
managed.setSysPIN(HttpDBSessionMgr.getSessionInfo(request).getUserPin());
}
});
Код выше вызовов в нашем классе BaseDAO (который использует Toplink)
import oracle.toplink.publicinterface.Session;
import oracle.toplink.publicinterface.UnitOfWork;
public T transaction(T detached, TransactionBlock transactionBlock) throws BadDBConnection {
Session session = centralSourceInjector.inject();
UnitOfWork uow = session.acquireUnitOfWork();
try {
T managed = (T)uow.registerObject((T) detached);
transactionBlock.merge(detached, managed);
uow.commit();
session.refreshObject(detached);
return managed;
} catch(OptimisticLockException ole){
uow.rollbackTransaction();
throw ole;
} finally {
uow.release();
}
}
код только обновляет столбец «Уведомлять», столбцы sysDttm и SysPin вообще не обновляются. Это две переменные и их методы.
private Date sysDttm;
private String sysPIN;
public Date getSysDttm() {
return sysDttm;
}
public void setSysDttm(Date sysDttm) {
this.sysDttm = sysDttm;
}
public String getSysPIN() {
return sysPIN;
}
public void setSysPIN(String sysPIN) {
this.sysPIN = sysPIN;
}
Любые предложения?
Спасибо,
Том
Можем ли мы увидеть '' setSysDttm' и setSysPIN'? –
Вы имеете в виду переменные: private Date sysDttm; private String sysPIN; Или столбцы базы данных? –
Я имею в виду методы Java и соответствующие [аннотации] (http://www.oracle.com/technetwork/middleware/ias/toplink-jpa-annotations-096251.html). –