user2061066
user2061066

Reputation: 97

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;

Upvotes: 3

Views: 2217

Answers (2)

Thomas
Thomas

Reputation: 88727

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

Upvotes: 2

jeetendra Mandal
jeetendra Mandal

Reputation: 150

See, @GeneratedValue will only work if You call hibernate API.

To use Autoincrement values, we don't need hibernate @GeneratedValue feature.

You can enable the auto to generate from Database itself. mark a column auto generate.

Refer to :

https://chartio.com/resources/tutorials/how-to-define-an-auto-increment-primary-key-in-oracle/

While inserting don't include the column name and values in your bulk insert Query for column marked as Auto increment.

Upvotes: 0

Related Questions