Alex Rivera | Logout

Hibernate constraint ConstraintViolationException. Is there an easy way to ignore duplicate entries?

Asked 2010-05-23T23:35:09.187
18

Basically I've got the below schema and I'm inserting records if they don't exists. However when it comes to inserting a duplicate it throws and error as I would expect. My question is whether there is an easy way to make Hibernate to just ignore inserts which would in effect insert duplicates?

CREATE TABLE IF NOT EXISTS `method` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


SEVERE: Duplicate entry 'GET' for key 'name'
Exception in thread "pool-11-thread-4" org.hibernate.exception.ConstraintViolationException: could not insert:
Edit
Report

1 Answer

15

My question is whether there is an easy way to make Hibernate to just ignore inserts which would in effect insert duplicates?

How could Hibernate possibly know that a record has a non unique value without actually inserting the record?

If you are doing batch inserts and don't want to rollback the whole transaction and discard the session in case of a ConstraintViolationException (that's what you should do in theory after an exception, see this thread and this previous answer), my suggestion would be to use the StatelessSession API and to catch the ConstraintViolationException.

answered 2010-05-23T23:55:26.877

Your Answer