Hibernate Mapeamento One-To-Many

0 respostas
lucasap2005

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

Criado 11 de junho de 2008
Respostas 0
Participantes 1