O problema é que o hibernate está tentando salvar o objeto de relacionamento,
CellAtLocation instância, enquanto os objetos filhos, Cell e/ou Location instâncias ainda não são persistidas. Assim, os objetos filhos não têm generated id s associados a eles e, portanto, o hibernate não pode calcular o hash para eles. Antes de tentar salvar
CellAtLocation instância, tente salvar os objetos filhos primeiro chamando saveOrUpdate método neles.