我有一个Java bean。现在,我想确保这个域是唯一的。
我正在使用以下代码:
@UniqueConstraint(columnNames={"username"})
public String username;
但是我得到了一些错误:
@UniqueConstraint is dissallowed for this location
使用唯一约束的正确方法是什么?
注意:我使用的是play框架。
我有一个Java bean。现在,我想确保这个域是唯一的。
我正在使用以下代码:
@UniqueConstraint(columnNames={"username"})
public String username;
但是我得到了一些错误:
@UniqueConstraint is dissallowed for this location
使用唯一约束的正确方法是什么?
注意:我使用的是play框架。
当前回答
您可以在类级别使用以下语法
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"username"})})
public class SomeEntity {
@Column(name = "username")
public String username;
}
其他回答
您可以在类级别使用以下语法
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"username"})})
public class SomeEntity {
@Column(name = "username")
public String username;
}
唯一注释应该放在属性声明的正上方。 UniqueContraints进入数据类声明上面的@Table注释。见下文:
@Entity
@Table(uniqueConstraints= arrayOf(UniqueConstraint(columnNames = arrayOf("col_1", "col_2"))))
data class Action(
@Id @GeneratedValue @Column(unique = true)
val id: Long?,
val col_1: Long?,
val col_2: Long?,
)
注意:在Kotlin中,在注释中声明数组的语法使用arrayOf(…)而不是{…}
@Entity
@Table(uniqueConstraints=arrayOf(UniqueConstraint(columnNames=arrayOf("book", "chapter_number"))))
class Chapter(@ManyToOne var book:Book,
@Column var chapterNumber:Int)
注意:从Kotlin 1.2开始,可以使用[…]语法,所以代码变得简单得多
@Entity
@Table(uniqueConstraints=[UniqueConstraint(columnNames=["book", "chapter_number"])])
class Chapter(@ManyToOne var book:Book,
@Column var chapterNumber:Int)
对我来说,添加@Column(name = "column_name", length = 11, unique = true)起作用了
Way1:
@Entity
@Table(name = "table_name",
uniqueConstraints={
@UniqueConstraint(columnNames = "column1"),
@UniqueConstraint(columnNames = "column2")
}
)
->这里columnn1和Column2分别作为唯一的约束。 例如:如果任何时候columnn1或column2的值匹配,那么你将得到UNIQUE_CONSTRAINT Error。
Way2:
@Entity
@Table(name = "table_name",
uniqueConstraints={@UniqueConstraint(columnNames ={"column1","column2"})})
->在这里,columnn1和column2的组合值作为唯一的约束