java - proveedores - JPA: asignación de nombre de columna predeterminada para las relaciones @ManyToOne
patron jpa (2)
Puede que no entienda tu pregunta. Sin embargo, ¿no necesitas algo como abajo?
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="order_id", nullable=false)
Order order;
Cuando tenemos una clase:
@Entity
Order implements Serializable {
@Id
private Integer id;
...
}
y:
@Entity
OrderLine implements Serializable {
@Id
private Integer id;
@ManyToOne
Order order;
...
}
¿A qué nombre de fila se asignará el orden de propiedad?
order_id, ORDER_ID or Order_id?
(omitir @JoinColumn (name = ''order_id'') es deliberado)
JoinColumn
es lo que escribe la especificación JPA 1.0 sobre la anotación JoinColumn
:
9.1.6 Anotación JoinColumn
...
El elemento de anotación de
name
define el nombre de la columna de clave externa. Los elementos de anotación restantes (distintos a losreferencedColumnName
) se refieren a esta columna y tienen la misma semántica que para la anotación de columna.Si hay una sola columna de unión, y si falta el miembro de la anotación del
name
, el nombre de la columna de unión se forma como la concatenación de lo siguiente: el nombre de la propiedad de relación de referencia o el campo de la entidad de referencia; "_"; El nombre de la columna de clave primaria referenciada. Si no existe tal propiedad o campo de relación de referencia en la entidad (es decir, se utiliza una tabla de unión), el nombre de la columna de unión se forma como la concatenación de lo siguiente: el nombre de la entidad; "_"; El nombre de la columna de clave primaria referenciada....
Entonces, en su ejemplo, el nombre predeterminado de la columna de clave externa sería order_id
.
Referencias
- Especificación JPA 1.0
- Sección 9.1.6 "JoinColumn Annotation"