Determined that the issue with the Cube class having two constructors was more subtle. On Debian, the persistence engine calls newInstance on the Cube( Double...dimensions) constructor, but since dimensions is null, its call this( Arrays.asList( dimensions ) ) fails becuase it doens't have a constructor of list null. Changing the cube code to this( Arrays.asList( (Double[])dimensions ) ) ensures that the other constructor can be found and called.