2011-06-17 133 views
0

我正在实现Hibernate的自定义Id生成器。在我的生成方法中,我需要从另一个表中读取数据并修改它。这是(大约)我会这样做的方式:休眠:自定义ID生成器需要坚持实体

session = sessionFactory.openSession(); 
Transaction transaction = session.beginTransaction(); 
Criteria criteria = session.createCriteria(...)...; 
criteria.uniqueResult(); 
... 
session.save(...); 
transaction.commit(); 

这工作正常,但我怎么能在我的发电机中使用它。生成方法得到一个SessionImplementor,而不是Session。我如何坚持一个实体?

public class MyGenerator implements IdentifierGenerator 
{ 
    @Override 
    public Serializable generate(final SessionImplementor session, final Object object) throws HibernateException 
    { 
     ??? 
    } 
} 

任何想法?

回答

0

原来是相当简单:

Session session = (Session) sessionImplementor;