What if you keep @GeneratedValue but with a different strategy? There is a handful of them in GenerationType enum.