Oi pessoal,
bom, terminei de ler um artigo muito bom sobre JPA no javaworld, aki estão os links:
Nesse artigo so tem uma coisa que eu não entendi. Quando eu faço um classe quem uma associação qualquer, por exemplo Fatura está associada a um Pedido, uma associação um-para-um… Então, na classe Fatura eu vou colocar um atributo do tipo Pedido para representar essa associação. Até aí tudo bem.
Mas, no artigo, o exemplo dado, além de colocar na classe Fatura o atributo pedido do tipo Pedido, coloca também um atributo que representa a chave estrangeira na tabela Fatura que é a chave primária na tabela Pedido.
Até tentei postar la no artigo a duvida mas por algum motivo eu não consegui.
Bom, aki está a classe que foi colocada no artigo:
@Entity(name = "ORDER_INVOICE")
public class Invoice {
@Id
@Column(name = "INVOICE_ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private long invoiceId;
@Column(name = "ORDER_ID")
private long orderId;
@Column(name = "AMOUNT_DUE", precision = 2)
private double amountDue;
@Column(name = "DATE_RAISED")
private Date orderRaisedDt;
@Column(name = "DATE_SETTLED")
private Date orderSettledDt;
@Column(name = "DATE_CANCELLED")
private Date orderCancelledDt;
@Version
@Column(name = "LAST_UPDATED_TIME")
private Date updatedTime;
@OneToOne(optional=false)
@JoinColumn(name = "ORDER_ID")
private Order order;
...
//getters and setters goes here
}
Como vocês podem ver, a classe tem o atributo orderId.
Bom, essa coisa de colocar chave estrangeira é logica relacional, e não OO.
Será que é alguma imposição do JPA para que o campo seja criado na tabela Fatura?
VLW