Using unique constraint on Hibernate JPA2

你离开我真会死。 提交于 2019-11-27 03:13:49

问题


How can I implement my unique constraints on the hibernate POJO's? assuming the database doesn't contain any.

I have seen the unique attribute in @Column() annotation but I couldn't get it to work?
What if I want to apply this constraint to more than one column?


回答1:


Bascially, you cannot implement unique constraint without database support.

@UniqueConstraint and unique attribute of @Column are instructions for schema generation tool to generate the corresponsing constraints, they don't implement constraints itself.

You can do some kind of manual checking before inserting new entities, but in this case you should be aware of possible problems with concurrent transactions.

Therefore applying constraints in the database is the preferred choice.




回答2:


You can declare unique constraints using the @Table(uniqueConstraints = ...) annotation in your class

@Entity
@Table(uniqueConstraints=
           @UniqueConstraint(columnNames = {"surname", "name"})) 
public class SomeEntity {
    ...
}



回答3:


In JPA2, you can add the Unique constraint directly to the field:

@Entity
@Table(name="PERSON_TABLE") 
public class Person{
  @Id
  @Column(name = "UUID")
  private String id;

  @Column(name = "SOCIALSECURITY", unique=true)
  private String socialSecurityNumber;

  @Column(name = "LOGINID", unique=true)
  private String loginId;
}

IMHO its much better to assign the unique constraint directly to the attributes than at the beggining of the table.

If you need to declare a composite unique key however, then declaring it in the @table annotation is your only option.



来源:https://stackoverflow.com/questions/4546131/using-unique-constraint-on-hibernate-jpa2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!