Problemas de constraint no Hibernate

Bom dia pessoal…
Eu tenho um relacionamento OneToOne…

@Entity
@Table(name = "SIGGASM2_SUBINVENTORY")
@SequenceGenerator(name="SIGGASM2_SUBI_SUBINVENTORY_SEQ",sequenceName="SIGGASM2_SUBI_SUBINVENTORY_SEQ", allocationSize=1)
public class HandSubInventory implements Serializable, TreeNode {
	
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SIGGASM2_SUBI_SUBINVENTORY_SEQ")    
    @Column(name = "SUBINVENTORY_ID")
    private long subinvId;
    
    @Column(name = "SUBINVENTORY_CODE")
    private String subinvCode;
    
    @Column(name = "SUBINVENTORY_NAME")
    private String subinvName;

//resto dos atributos...

e a outra classe eu tenho o seguinte relacionamento…

@Entity
@Table(name="SIGGASM2_PARAMETERS")
@SequenceGenerator(name="SIGGASM2_PARA_PARAMETERS_I_SEQ", sequenceName="SIGGASM2_PARA_PARAMETERS_I_SEQ", allocationSize=1)
public class HandParameters implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator ="SIGGASM2_PARA_PARAMETERS_I_SEQ")	
	@Column(name="PARAMETERS_ID")
	private long parametersId;

        @OneToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="SUBINVENTORY_ID", insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private HandSubInventory handSubInventoryId;

Entao eu adiciono um HandSubInventory na minha classe HandParameters para salvar no banco… pelo relacionamento, o hibernate teria que salvar o HandSubinventory primeiro e depois pegar o ID que foi salvo e salvar na tabela HandParameters… so q isso nao ta acontecendo…

ORA-02291: integrity constraint (MRSSM2DES.FK_HAND_PARAMET_SUBINV_ID) violated - parent key not found

se eu simplesmente salvar a classe HandSubinventory ele salva no banco corretamente… Oq eu preciso fazer para ele salvar no banco o HandSubinventory, pegar o ID que foi salvo e depois salvar na tabela HandParameters?

Desde já agradeço…

Não sei se é o correto mais tente definir o atributo TargetEntity dentro da anotação @OneToOne

Ex:

 @OneToOne(targetEntity=HandSubInventory.class)

caso não seja isso peço desculpas, e vou acompanhar o resto das respostar para aprender de fato o erro.

abraçoss

Bom dia Tenkara Kiddo,
O negocio nao é isso cara… o Hibernate consegue reconhecer a targetEntity pelo proprio Atributo. Meu atributo ja é do tipo HandSubInventory.

Mesmo assim, Obrigado pela atençao e ajuda.

Aguardando respostas…

Alguem tem alguma ideia gente?
Fico aguardando…
Muito obrigado…

eu acredito que na sua classe HandParameters voce terá que colocar mapeamento para HandSubInventory

@OneToOne (mappedBy ="handSubInventoryId")
private HandSubInventory handSub;

depois voce paassa o objeto HandSubInventory para HandParameters e vice versa;

exemplo

HandSubInventory hand = new HandSubInventory();
HandParameters handParameteters = new HandParameters();

hand.sethandSub(handParameteters);
handParameteters .setHandSubInventory(hand);

na tenho ctz , mas pode ser isso.

Bom dia Ricardo…

Eu tentei fazer da seguinte forma…

//Classe HandParameters
@OneToOne(mappedBy="parameters", fetch = FetchType.EAGER)
	@JoinColumn(name="SUBINVENTORY_ID", insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private HandSubInventory handSubInventoryId;

//Classe HandSubInventory
@OneToOne(mappedBy="handSubInventoryId", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private HandParameters parameters;

A aplicação dá o seguinte erro…

ERROR [STDERR] org.hibernate.AnnotationException: Unknown mappedBy in: br.com.sigga.model.HandSubInventory.parameters, referenced property unknown: br.com.sigga.model.HandParameters.handSubInventoryId

Eu nao sei oq pode ser significar… Voê pode me ajudar nesse mapeamento?

Muito obrigado pela ajuda cara…

abraços

Eu acredito que seja pelo uso de 2 mappedBy…
tente deixar assim


//Classe HandParameters   
    @OneToOne(mappedBy="parameters", fetch = FetchType.EAGER)   
    @JoinColumn(name="SUBINVENTORY_ID", insertable=true, updatable=true)   
    @Fetch(FetchMode.JOIN)   
    @Cascade(CascadeType.SAVE_UPDATE)   
    private HandSubInventory handSubInventoryId;  

    //Classe HandSubInventory
    @OneToOne(fetch=FetchType.LAZY)   
    @Cascade(CascadeType.ALL)   
    private HandParameters parameters;  

Se nao der certo, da uma olhada nessa apostila na pagina 52 , eu fiz seguindo ela , nao tem erro…

http://www.google.com.br/#hl=pt-BR&&sa=X&ei=50lQTISGJ4SBlAe4-dS6CQ&ved=0CBcQBSgA&q=hibernate+com+anotações&spell=1&fp=1&cad=b

é o primeiro pdf que aparece.

Ricardo… Muito obrigado pela ajuda cara… Consegui resolver aki…

Ah, a apostila parece ser muito boa… Dei uma passada nela e principalmente na pagina que você falou sobre o meu problema… Fica o link ai para quem quiser aprender mais sobre Hibernate e anotations.

Obrigado…