rafoli
Julho 16, 2008, 2:35pm
#1
tenho 3 produtos novos e 1 venda nova
produtos.add(produto1);
produtos.add(produto2);
produtos.add(produto3);
venda.setProdutos(produtos);
vendaDAO.save(venda);
o hibernate salva todos os 3 produtos e a venda no banco de dados…
no entando não esta setando na tabela produto a referência a venda.
Na tabela Produto o campo venda_id fica nulo, pq?
Você já tentou cria um construtor para produto passando a venda.
Ex:
public Produto(){}
public Produto(Venda venda){
setVenda(venda);
}
Que ai quando salvar o produto o hibernate deve colocar o id da venda no produto.
rafoli
Julho 16, 2008, 6:45pm
#3
testei não deu certo…olha só os códigos
@Entity
public class ServiceOrder {
@Id
@GeneratedValue
private Integer id;
@OneToOne
@JoinColumn(name="customer_id")
private Customer customer;
@OneToMany(mappedBy = "serviceOrder", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private List<ServiceOrderDevice> devices;
...
}
[code]@Entity
public class ServiceOrderDevice {
@Id
@GeneratedValue
private Integer id;
@ManyToOne (fetch=FetchType.EAGER)
@JoinColumn (name="serviceorder_id")
@Cascade (CascadeType.ALL)
private ServiceOrder serviceOrder;
@OneToOne
@JoinColumn(name="device_id")
private Device device;
public ServiceOrderDevice() {
}
public ServiceOrderDevice(ServiceOrder serviceOrder) {
setServiceOrder(serviceOrder);
}
...
}[/code]
e o método que salva
public String save() {
ServiceOrderDevice serviceOrderDevice = new ServiceOrderDevice(); // dispositivo teste
List<ServiceOrderDevice> deviceList = new ArrayList<ServiceOrderDevice>();
deviceList.add(serviceOrderDevice);
serviceOrder.setDevices(deviceList);
serviceOrderDAO.save(serviceOrder);
return insert();
}
não está setando o campo serviceorder_id na tabela ServiceOrderDevice…
grato
rafoli
Julho 17, 2008, 7:03am
#4
consegui resolver
era o método
public void setDevices(List<ServiceOrderDevice> devices) {
this.devices = devices;
//trecho de código q acrescentei
for(ServiceOrderDevice sod: devices)
sod.setServiceOrder(this);
}
não sei se isso é um armego ou se é o correto…
abraços