Unique Constraint Over Multiple Columns

HibernatePostgresqlSeamHibernate MappingSeam2

Hibernate Problem Overview


I am using SEAM 2/Hibernate along with PostgreSQL 9 database. I have the following table

Active Band
===========
active_band_id serial
active_band_user text
active_band_date timestamp
active_band_process integer

I would like to add a constraint that ensures each new entry has a unique combination of active_band_user and active_band_date.

There could potentially be many attempted inserts per second so I need this to be as efficient as possible, is there a SEAM / hibernate annotation I can use in the entity mapping?

Thanks in advance

Hibernate Solutions


Solution 1 - Hibernate

There is no Hibernate annotation that checks uniqueness before insert/update. But there is annotation which will generate such a constraint to database if automatic database creation is used:

 @Table(
    name="ACTIVE_BAND", 
    uniqueConstraints=
        @UniqueConstraint(columnNames={"active_band_user", "active_band_date"})
)

Solution 2 - Hibernate

In a more modern syntax, it would be :

@Table(
    name="ACTIVE_BAND", 
    uniqueConstraints =
        [UniqueConstraint(
                columnNames = ["active_band_user", "active_band_date"]
        )]
)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDaveBView Question on Stackoverflow
Solution 1 - HibernateMikko MaunuView Answer on Stackoverflow
Solution 2 - HibernateNJellabView Answer on Stackoverflow