Pessoal, estou com o seguinte problema: Ao inserir salvar um Produto, eu tenho uma lista de Documentos e de Imagens que compõe esse objeto Produto.
Coloquei as annotations de cascade ALL para que quando salvar o Produto ele automaticamente insera os Documentos e Imagens. Mandei imprimir o SQL e ele faz o insert na tabela de Produto e depois tenta dar update na tabela de Documentos e depois na de Imagens, so que nao inseriu nenhum registro nessa tabela.
Vou postar o codigo:
@Entity
@Table(name="PRODUTO", uniqueConstraints = @UniqueConstraint(columnNames={"IDMARCA", "IDGRUPOPRODUTO", "IDTIPOLOGIAPRODUTO"}))
public class Product {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name="IDPRODUTO")
private long id;
@Column(name="MODELO")
private String name;
@OneToOne
@JoinColumn(name="IDMARCA")
private Brand brand;
@OneToOne
@JoinColumn(name="IDGRUPOPRODUTO")
private ProductGroup productSubGroup;
@OneToOne
@JoinColumn(name="IDTIPOLOGIAPRODUTO")
private ProductTypology productTypology;
@ManyToMany
private List<Suplier> supliers;
@OneToMany
@Cascade(value={CascadeType.ALL, CascadeType.DELETE_ORPHAN})
@JoinColumn(name="IDPRODUTO", nullable=false)
private List<Document> documents;
@OneToMany
@Cascade(value={CascadeType.ALL, CascadeType.DELETE_ORPHAN})
@JoinColumn(name="IDPRODUTO", nullable=false)
private List<Image> images;
public ProductGroup getProductSubGroup() {
return productSubGroup;
}
public void setProductSubGroup(ProductGroup productSubGroup) {
this.productSubGroup = productSubGroup;
}
public List<Suplier> getSupliers() {
if(supliers == null) {
supliers = new ArrayList<Suplier>();
}
return supliers;
}
public void setSupliers(List<Suplier> supliers) {
this.supliers = supliers;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public Brand getBrand() {
return brand;
}
public void setId(long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setBrand(Brand brand) {
this.brand = brand;
}
public void setProductGroup(ProductGroup productSubGroup) {
this.productSubGroup = productSubGroup;
}
public void addSuplier(Suplier suplier) {
getSupliers().add(suplier);
}
public void addDocument(Document document) {
getDocuments().add(document);
}
public List<Document> getDocuments() {
if(documents == null) {
documents = new ArrayList<Document>();
}
return documents;
}
public void setDocuments(List<Document> documents) {
this.documents = documents;
}
public void addImage(Image image) {
getImages().add(image);
}
public List<Image> getImages() {
if(images == null) {
this.images = new ArrayList<Image>();
}
return images;
}
public void setImages(List<Image> images) {
this.images = images;
}
public void setProductTypology(ProductTypology productTypology) {
this.productTypology = productTypology;
}
public ProductTypology getProductTypology() {
return productTypology;
}
}
@Entity
@Table(name="DOCUMENTO")
public class Document {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name="IDDOCUMENTO")
private long id;
@Lob
@Column(name="DOCUMENTO")
private byte[] document;
public void setId(long id) {
this.id = id;
}
public void setDocument(byte[] document) {
this.document = document;
}
public long getId() {
return id;
}
public byte[] getDocument() {
return document;
}
}
@Entity
@Table(name="IMAGEM")
public class Image {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name="IDIMAGEM")
private long id;
@Lob
@Column(name="IMAGEM")
private byte[] image;
public void setId(long id) {
this.id = id;
}
public void setImage(byte[] image) {
this.image = image;
}
public long getId() {
return id;
}
public byte[] getImage() {
return image;
}
}
Espero que me ajudem ae…vlw