um objeto é persistente qd é observado por uma session, certo!?
então, qd vc faz um load… “session.load(Class, id)”… vc carrega um objeto do banco e enqt sua sessão estiver aberta esse objeto ficará no modo persistente. assim, qualquer alteração desse objeto persitente causará uma atualização na base de dados, seja com flush(), commit() de uma transação.
uma outra coisa q vc deve perceber é q load utiliza lazy, e retorna null caso vc não seja encontrado nenhum objeto relacionado ao id informado.
obs: se vc utilizar get, alem da possibilidade de utilizar lazy, vc recebe um objeto com seus atributos vazios caso o id não seja encontrado no banco.
dica: utilizando get é vc pode utilizar hql para fazer uma pesquisa mais completa do seu objeto.
confira seu código para ver se vc não fechou a sessão e está tentando utilizar algum método flush(), commit()…