Tengo un bean de Java. Ahora, quiero estar seguro de que el campo debe ser único.
Estoy usando el siguiente código:
@UniqueConstraint(columnNames={"username"})
public String username;
Pero estoy recibiendo un error:
@UniqueConstraint is dissallowed for this location
¿Cuál es la forma correcta de usar restricciones únicas?
Nota: Estoy usando marco de juego.
“Pero estoy recibiendo un error”. Siempre especifique qué error está obteniendo en la pregunta. Tiene información relevante que muy bien puede ayudarnos a resolver su problema, no se la guarde.
– Jon Skeet
27 de junio de 2010 a las 8:09
¿Sería posible usar la anotación @id?
– Pez espada albino
27 de junio de 2010 a las 8:09
Maravilloso comentario Jon Skeet, ¡me alegró el día!
– Gato Stimpson
4 de febrero de 2021 a las 8:21
mdma
Para asegurarse de que un valor de campo sea único, puede escribir
@Column(unique=true)
String username;
La anotación @UniqueConstraint es para anotar varias claves únicas en el nivel de la tabla, por lo que aparece un error al aplicarla a un campo.
Es importante tener en cuenta que solo funcionará si permite que JPA cree sus tablas
– naoru
10 mayo 2018 a las 21:04
Puede usar a nivel de clase con la siguiente sintaxis
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"username"})})
public class SomeEntity {
@Column(name = "username")
public String username;
}
francescom
Actualmente también estoy usando play framework con hibernate y anotación JPA 2.0 y este modelo funciona sin problemas
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"id_1" , "id_2"})})
public class class_name {
@Id
@GeneratedValue
public Long id;
@NotNull
public Long id_1;
@NotNull
public Long id_2;
}
Espero haber ayudado.
Espero que no codifiques con estos campos en la vida real 😉
– Gato Stimpson
4 de febrero de 2021 a las 8:22
Por supuesto que no, pero escribo ejemplos con tales campos: D
– FrancescoM
16 de diciembre de 2021 a las 12:01
GlenPeterson
Nota: En Kotlin, la sintaxis para declarar las matrices en las anotaciones usa arrayOf(...) en vez de {...}
@Entity
@Table(uniqueConstraints=arrayOf(UniqueConstraint(columnNames=arrayOf("book", "chapter_number"))))
class Chapter(@ManyToOne var book:Book,
@Column var chapterNumber:Int)
Nota: A partir de Kotlin 1.2 es posible utilizar el [...] sintaxis para que el código sea mucho más simple
@Entity
@Table(uniqueConstraints=[UniqueConstraint(columnNames=["book", "chapter_number"])])
class Chapter(@ManyToOne var book:Book,
@Column var chapterNumber:Int)
-> Aquí tanto Column1 como Column2 actúan como restricciones únicas por separado. Ej: si en algún momento el valor de la columna 1 o el valor de la columna 2 coinciden, obtendrá un error UNIQUE_CONSTRAINT.
-> Aquí, los valores combinados de column1 y column2 actúan como restricciones únicas
TanvirChowdhury
@UniqueConstraint esta anotación se usa para anotar claves únicas o múltiples en el nivel de la tabla separadas por comas, por lo que obtiene un error. solo funcionará si permite que JPA cree sus tablas
Ejemplo
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Builder(builderClassName = "Builder", toBuilder = true)
@Entity
@Table(name = "users", uniqueConstraints = @UniqueConstraint(columnNames = {"person_id", "company_id"}))
public class AppUser extends BaseEntity {
@Column(name = "person_id")
private Long personId;
@ManyToOne
@JoinColumn(name = "company_id")
private Company company;
}
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
“Pero estoy recibiendo un error”. Siempre especifique qué error está obteniendo en la pregunta. Tiene información relevante que muy bien puede ayudarnos a resolver su problema, no se la guarde.
– Jon Skeet
27 de junio de 2010 a las 8:09
¿Sería posible usar la anotación @id?
– Pez espada albino
27 de junio de 2010 a las 8:09
Maravilloso comentario Jon Skeet, ¡me alegró el día!
– Gato Stimpson
4 de febrero de 2021 a las 8:21