Pregunta

Tengo una tabla con tres columnas, "A", "B" y "C". Dos de estas columnas (A y B) son la clave primaria compuesta para la tabla. He escrito una clase Java para esta tabla y estoy usando Hibernate para asignar los datos de la clase a los datos en la tabla. He creado otra clase para la tecla incrustada (es decir, compuesto).

Las dos clases se ven así:

@Entity
@Table(name="SOME_TABLE", schema="SOME_SCHEMA")
public class Outer {
    private Key key;
    private String a;
    private String b;
    private String c;

    @EmbeddedId
    public Key getId() {
        return this.key;
    }

    // Also a setter for Key...

    @Column(name="A")
    public String getA() {
        return this.a;
    }

    public void setA(final String a) {
        this.a = a;
    }

    // Also setters and getters for B and C.
}

.

@Embeddable
public class Key {
    private String a;
    private String b;

    @Column(name="A")
    public String getA() {
        return this.a;
    }

    public void setA(final String a) {
        this.a = a;
    }

    // Also a getter & setter for B.
}

Parece que toda la documentación hibernada pasa gloses sobre dónde, exactamente, los Getters y Setters deberían ir. ¿Deberían tanto el exterior como la tecla tener los setters para los valores que componen la tecla compuesta? Si tengo un setter en ambos lugares, ¿Hibernate hace lo correcto (es decir, establece el valor en la clave) si configure el valor para un exterior? ¿Deberían los externos.geta/b () y externo.seta/b () diferir a la clase clave?

Creo que es una mala práctica de codificación tener setters en dos lugares para los mismos datos. Es ambiguo al menos. Espero que Hibernate establezca los valores en la clase clave para mí, pero me gustaría saberlo con certeza. ¡Gracias!

-José

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top