unica registro recuperar ips datos clave civil certificado antecedentes actualizar acceso java hibernate orm jpa annotations

java - registro - recuperar clave ips



¿Cómo obtener una clave única para dos campos con Hibernate? (2)

Esto creará una clave única en la base de datos:

@Table( name = "MYTABLE", uniqueConstraints = { @UniqueConstraint( columnNames = { "NAME", "VERSION" } ) } )

Esto será aplicado por la base de datos en una actualización o persistirá.

Tendrá que escribir su propio validador personalizado si quiere aplicar esto usando Hibernate Validator.

Tengo dos campos de una clase de entidad que no quiero que sean exclusivos, sino que se utilicen como campos compuestos para una clave que debe ser única. Por ejemplo, tengo dos campos (nombre y versión) que pueden ser iguales para otros registros, pero juntos deben ser únicos. ¿Cuál es la mejor manera de hacerlo usando Hibernate (con anotaciones)? Estoy usando Hibernate Validator para otros campos, pero no estoy seguro de cómo usar eso para validar que dos campos juntos componen una clave única. Estoy usando una clase de entidad genérica que tiene un tipo genérico de Id. Que se puede intercambiar para una clase de clave compuesta, pero todavía tengo que conseguir que funcione muy bien.


Por lo general, envolveremos los dos campos en una clase de clave interna que está marcada como @Embeddable. Por ejemplo:

@Entity public class Foo { @EmbeddedId() private Key key; ... @Embeddable public static class Key { @Column(nullable=false) private String name; @Column(nullable=false) private int version; protected Key () { // for hibernate } public Key (String name, int version) { this.name = name; this.version = version; } ... // You probably want .equals and .hashcode methods } }