El problema es que hibernate intenta guardar el objeto de relación, CellAtLocation instancia, mientras que los objetos secundarios, Cell y/o Location las instancias aún no se conservan. Por lo tanto, los objetos secundarios no tienen generated id s asociados con ellos y, por lo tanto, hibernate no puede calcular el hash para ellos.
Antes de intentar guardar CellAtLocation ejemplo, intente guardar los objetos secundarios primero llamando a saveOrUpdate método en ellos.