私のStrutsアクションでは、データベースからオブジェクトXを取得し、そこに含まれる1対多のコレクションへの参照を取得し、このコレクションにいくつかのオブジェクトを追加して、元のオブジェクトXを保存します。問題は、エラーがスローされないことです。 1 対多のコレクションによって参照されるテーブルには、新しい行が追加されません。
これが私のアクションコードです...
public String saveSelectedDefinitions()
{
WordT wordT = wordDao.get(2);
Set<DefinitionT> storedDefs = wordT.getDefinitionTs();
for( int i=0; i<3; i++)
{
DefinitionT selectedDef = new DefinitionT();
selectedDef.setValue("abc");
selectedDef.setWordT(wordT);
storedDefs.add(selectedDef);
}
wordT.setDefinitionTs(storedDefs);
wordDao.save(wordT);
return SUCCESS;
}
これが私のWordTクラスです
@Entity
@Table(name = "word_t", schema = "public")
public class WordT implements java.io.Serializable {
private int id;
private Set<DefinitionT> definitionTs = new HashSet<DefinitionT>(0);
public WordT() {
}
public WordT(int id) {
this.id = id;
}
public WordT(int id, Set<DefinitionT> definitionTs) {
this.id = id;
this.definitionTs = definitionTs;
}
@Id
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@OneToMany(fetch = FetchType.EAGER, mappedBy = "wordT")
public Set<DefinitionT> getDefinitionTs() {
return this.definitionTs;
}
public void setDefinitionTs(Set<DefinitionT> definitionTs) {
this.definitionTs = definitionTs;
}
}
ここに私の DefinitionT クラスがあります
@Entity
@Table(name = "definition_t", schema = "public")
public class DefinitionT implements java.io.Serializable {
private int id;
private WordT wordT;
public DefinitionT() {
}
public DefinitionT(int id, WordT wordT) {
this.id = id;
this.wordT = wordT;
}
public DefinitionT(int id, WordT wordT, String value, int typeId,
Boolean selected) {
this.id = id;
this.wordT = wordT;
}
@Id
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "word_id", nullable = false)
public WordT getWordT() {
return this.wordT;
}
public void setWordT(WordT wordT) {
this.wordT = wordT;
}
}
Hibernate ツールを使用して Daos と Pojo を生成しました。DefinitionDao を使用して definitionT インスタンスを永続化すると、正常に永続化されるため、テーブルの整合性は問題ありません。コレクションを保存せず、保存に失敗した理由についてエラーが表示されないのはなぜですか?