2012-04-05 9 views
0

休止状態でカスケード操作を使用する際に問題が発生します。私は1つのエンティティ(TripleDBmodel)を持ち、エンティティの主キーは3つのオブジェクト(Concept)への参照を使って作成されます。それは完璧に働いている、私はまた、これらのオブジェクトのカスケード操作を追加、私はTripleDBModelエンティティの保存操作は、データベースに存在しない概念も保存すると思います。しかし、それはそのように動作していません。休止状態カスケード操作が動作しない

@Entity 
@Table(name = "triple") 
public class TripleDBModel implements java.io.Serializable{ 

private Concept subject; 
private Concept object; 
private Concept predicate; 
public TripleDBModel(){ 

} 
@Id 
@ManyToOne(targetEntity=Concept.class) 
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) 
@JoinColumn(name="subject_uri") 
public Concept getSubject() { 
    return subject; 
} 
public void setSubject(Concept subject) { 
    this.subject = subject; 
} 
@Id 
@ManyToOne(targetEntity=Concept.class) 
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) 
@JoinColumn(name="object_uri") 
public Concept getObject() { 
    return object; 
} 
public void setObject(Concept object) { 
    this.object = object; 
} 
@Id 
@ManyToOne(targetEntity=Concept.class) 
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) 
@JoinColumn(name = "predicate_uri") 
public Concept getPredicate() { 
    return predicate; 
} 
public void setPredicate(Concept predicate) { 
    this.predicate = predicate; 
} 

} 


@Entity 
@Table(name = "concept") 
public class Concept implements java.io.Serializable { 

private String uri; 
private String label; 


// private List<TripleDBModel> triple; 

public Concept(String uri, String label) { 
    this.uri = uri; 
    this.label = label; 
    this.ontologies = new ArrayList<Ontology>(); 
} 

public Concept() { 
    super(); 
} 

@Id 
@Column(name = "uri", length = 255, unique = true, nullable = false) 
public String getUri() { 
    return uri; 
} 

public void setUri(String uri) { 
    this.uri = uri; 
} 
.... 

}

+0

「機能しない」とは何ですか?あなたは何を期待していますか?代わりに何をしますか?実行しているコードは何ですか? –

+0

答えをありがとう。私は、tripleDBmodelに表示される概念がまだ保存されていない(データベースにない)場合はsession.save(tripleDBmodel)を作成し、コンセプトが保存され、テーブルコンセプトで表示されることを期待しています。カスケード操作が行われます。 – silvestrelosada

答えて

0

カスケードオプションは関係の@OneToMany側で動作します。

新しいコンセプトを作成する必要があるときに、別にそれを維持することは問題ではないはずです。

+0

情報ありがとうございます、私はそれを別に懇願します – silvestrelosada