Hibernate OneToMany [Resolvido]

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.

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

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… :stuck_out_tongue:

abraços