user2061066 user2061066 - 1 year ago 71
Java Question

Manual inserts while using hibernate @GeneratedValue

I'm using hibernate to auto generate IDs for table, but i need to manually insert some rows (about 10k, just once) related to another table. I'm using Oracle DB. How can I do that? How does hibernate generete values? It is possible to use it?

@Id
@GeneratedValue
private Long id;

Answer Source

Of course that's possible, we're doing that all the time. Whether and how depends on the id generation strategy you use and how your database is set up.

We're using a (customized) table generator that generates positive ids so whenever we need to manually insert elements we use negative ids. That way those ids don't interfere with Hibernate's id generation and we are able to immediately identify manually inserted rows.

If you don't like negative ids you could use a different generation strateg, e.g.

  • a sequence on the id column that is used by Hibernate as well as manual inserts
  • a high-low table generator (that's what we're using) with the initial low value set to some higher value and thus essentially reserving the lower positive values for manual inserts)
  • an "assigned" id generator, i.e. your application defines the id (e.g. an employee's employee-id) and thus you'd know which ids can be added manually
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download