Creo que podría ser malentendido de cómo @JoinColumns trabajo, pero estoy recibiendo un error cuando puedo volver a usar el nombre de atributo. Pero no el atributo de nombre de mapa a una columna de base de datos? ¿No debería ser capaz de volver a utilizarla?

Hay error, estoy consiguiendo:

Repeated column in mapping for entity: data.model.DP column: division

El código:

@Column(name = "division", nullable = false)
private String division;

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumns({
    @JoinColumn(name = "division_labeldefintion", referencedColumnName = "labeldefinition"),
    @JoinColumn(name = "division", referencedColumnName = "abbr")
})
private LabelFile divisionLabel;

Lo que yo estoy tratando de hacer es hacer un multi-unirse a la columna de una tabla (que contiene el division columna, y unirse con el LabelFile tabla.

InformationsquelleAutor Hanna | 2012-09-13

2 Comentarios

  1. 10

    Si quieres volver a usar una columna en una asignación debe marcar uno como insertable=false updatable=false, Hibernate saber que Java valor de referencia es la más relevante.

    Obtener más información sobre cuándo utilizar estos atributos está disponible en este pregunta.

  2. 1

    Cuando se utiliza el JoinColumn anotación usted debe ser consciente de que, dependiendo del tipo de asociación entre dos tablas o entidades de los atributos «nombre» y «referencedColumnName» están cambiando el lugar donde se hace referencia a.
    Compruebe la API de JPA, o mira aquí para una descripción más detallada.

    En su caso, el atributo «name» de JoinColumn en «divisonLabel» la propiedad es hacer referencia a la tabla de origen/entidad. Y «referencedColumnName» es hacer referencia a las columnas de LabelFile tabla/entidad.
    Así, usted está tratando de tener dos «división» de las columnas en la tabla de origen/entidad.

    Tener el trabajo de mapeo cambiar los valores de «nombre» y «referencedColumnName».

    • No cambiar a cambiar la tabla que me estoy agarrando de? Quiero tener una «división» de la columna Y el uso de «división» en mi unirse y utilizar para que coincida con «abbr», que también está en la LabelFile.
    • Es, y ese es el punto. De la manera que usted escribió es ahora el JPA/Hibernate está tratando de crear dos columnas denominadas «división»; uno para el texto sin formato de campo que no tiene nada que ver con ninguna de las asociaciones; la segunda, para ser utilizado como parte de la clave compuesta. Anotación por encima de LabelFile de la propiedad es la creación de nuevos campos/columnas dentro de la actual entidad/tabla. nota: trate de no pensar en forma de columnas&tablas, JPA y ORM están ahí para ocultar la base de datos y trabajar con objetos en su lugar. descargo de responsabilidad: yo estoy escribiendo esto sin necesidad de escribir ningún código, así que podría ser que estoy con vistas a algo. esperemos que no.

Dejar respuesta

Please enter your comment!
Please enter your name here