FundsAccount持久化类:
private Integer fundsAccountId;
......
private Set upFundsAccountLogses = new HashSet(0);
UpFundsAccountLogses 持久化类:
private Integer id;
......
private FundsAccount fundsAccount;
addAccount方法中:我在向数据库插入一个新的记录时(同时也把fundsAccount的一个列(prise列)做了改变):
String statu=null;
String fundType=FundAccountAdminDao.queryType(numberedAccount);
if(fundType.equals("正常"))
{
Session session=HibernateSessionFactory.getSession();
Transaction tr=null;
try {
Query q=session.createQuery("from FundsAccount where numberedAccount='"+numberedAccount+"'");
FundsAccount fundsAccount=(FundsAccount)q.uniqueResult();
double fundPrise=fundsAccount.getAmountOfMoney();
fundPrise=fundPrise+prise;
fundsAccount.setAmountOfMoney(fundPrise);
UpFundsAccountLogs upFundsAccountLogs=new UpFundsAccountLogs();
System.out.println(upFundsAccountLogs.getId());
upFundsAccountLogs.setOperators(operator);
upFundsAccountLogs.setFundsAccount(fundsAccount);
upFundsAccountLogs.setUpdateTime(new Date());
tr=session.beginTransaction();
fundsAccount.getUpFundsAccountLogses().add(upFundsAccountLogs);
session.save(fundsAccount);
//session.save(upFundsAccountLogs);
tr.commit();
statu="追加资金成功!";
表FundsAccount中的AmountOfMoney字段修改成功,但UpFundsAccountLogses表没有插入新记录.
又写了一个方法,但测向表UpFundsAccountLogses中插入数据:
public void upFundsLogs(String numberedAccount,Operators operator){
Session session=HibernateSessionFactory.getSession();
Query q=session.createQuery("from FundsAccount where numberedAccount='"+numberedAccount+"'");
FundsAccount fundsAccount=(FundsAccount)q.uniqueResult();
UpFundsAccountLogs upFundsAccountLogs=new UpFundsAccountLogs();
System.out.println(upFundsAccountLogs.getId());
upFundsAccountLogs.setOperators(operator);
upFundsAccountLogs.setFundsAccount(fundsAccount);
upFundsAccountLogs.setUpdateTime(new Date());
session.persist(upFundsAccountLogs);
}
测试出错:
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not fetch initial value for increment generator
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:107)
at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:44)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:91)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:613)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:587)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:591)
at com.dao.fundAccountAdmin.FundAccountAdminDao.upFundsLogs(FundAccountAdminDao.java:317)
at com.dao.fundAccountAdmin.FundAccountAdminDao.main(FundAccountAdminDao.java:334)
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'upFundsAccountLogs' 无效。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:85)
... 10 more