0

休止状態でのカスケード操作の使用に問題があります。1 つのエンティティ (TripleDBmodel) があり、エンティティの主キーは 3 つのオブジェクト (概念) への参照を使用して作成されます。それは完璧に機能しています。これらのオブジェクトにカスケード操作も追加しました。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;
}
....

}

4

1 に答える 1

0

カスケード オプションは、関係の @OneToMany 側でのみ機能します。

とにかく新しい概念をいつ作成する必要があるかを知っておく必要があるので、それを個別に永続化することは問題ではありませんか?

于 2012-04-05T20:05:41.260 に答える