Hibernate forçar a inserção de um registro com id estabelecido

Bom dia amigos, estou com um problema na inclusão de alguns registros. Vou explicar meu ambiente:
Tenho uma aplicação web que que conecta a um banco MySQL utilizando Hibernate. Este banco provê dados para outras aplicações que rodam offline utilizando JavaDB Embedded (Derby). Quando estas aplicações offline rodam, elas pegam os registros novos e atualizam suas bases locais. Só que ao inserir o registro na base atual, ele não está pegando o mesmo ID da base online, ele joga um ID qqr e fica furado as FK.

O que tem de diferente neste projeto (não sei se isto interfere em algo) mas eu tenho um projeto que na verdade é uma biblioteca aonde tem todas as classes dao e as vo (value objects). Esta biblioteca é utilizada por ambos projetos. Vou colocar abaixo os fontes envolvidos:

AbstractDAO

public class AbstractDAO<T> implements IAbstractDAO<T> {
    protected Class<T> classVO = null;
    protected HibernateTemplate template;
    
    public AbstractDAO() {
        this.classVO = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

    @Override
    public T get(Long id) {
        return this.template.get(classVO, id);
    }

    @Override
    public T add(T entity) {
        this.template.save(entity);
        return entity;
    }

    @Override
    public T update(T entity) {
        this.template.merge(entity);
        return entity;
    }
    
    @Override
    public void delete(T entity) {
        this.template.delete(entity);
    }

    @Override
    public void delete(Integer id) {
        T entity = this.template.load(classVO, id);
        this.delete(entity);
    }

    @Override
    @SuppressWarnings("unchecked")
    public List<T> list() {
        return this.template.find(String.format("from %s", this.classVO.getName()));
    }
}

Uma classe DAO para exemplo (PaisDAO)

[code]
@Repository
public class PaisDAO extends AbstractDAO {

@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
    this.template = new HibernateTemplate(sessionFactory);
} 

}[/code]

Uma classe VO de exemplo

@Entity
@Table(name="pais")
public class PaisVO implements Serializable {
    private static final long serialVersionUID = -1730794847340576406L;
    
    @Id @GeneratedValue
    private Long id;
    @Column(length=60,nullable=false)
    private String nome;

    //Getters & Setters
}

Como posso fazer para resolver este problema?