0
WordとStemの2つのテーブルがあります。 2番目のフィールドには、Wordの外部キーであるフィールドがあります。多くの茎は1つの単語に属することができます。Hibernate、間接リレーションシップマッピング
Javaでは、エンティティのWordとStemを作成しました。単語は多くの茎を持つことができるので、私はこの幹のリストにいくつかの操作を持っているので、私はこのリストを対応する方法でStemsと呼ばれる別のクラスに入れます。このクラスのオブジェクトはWordエンティティにあります。私は私のコードがどのように見えるか提示下:Word.java
@Entity
@Table(name = "Word")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Word implements Serializable{
// primary key and other columns
@Transient
protected Stems stems = new Stems();
public void setStems(List<Stem> stems) {
this.stems.setStems(stems);
}
@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="word")
public List<Stem> getStems() {
return stems.getStems();
}
}
Stems.java
public class Stems {
private List<Stem> stems = new ArrayList<>();
public List<Stem> getStems() {
return stems;
}
public void setStems(List<Stem> stems) {
this.stems = stems;
}
}
Stem.java
@Entity
@Table(name = "Stems")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="Type",discriminatorType=DiscriminatorType.STRING)
public abstract class Stem implements Cloneable{
@Id
@Column(name = "Stem", unique = true, nullable = false, length = 64)
private String rawStem;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "WordId", nullable = false)
private Word word;
}
ここでご質問ください。適切なステムで単語を取得するためにHQLクエリを作成することは可能ですか?いいえ場合はどのようにこれを達成する。おそらく、この構造は動作しないのでしょうか?どのように私は茎で単語を追加/更新できますか?私は、各茎の単語と単語idに茎の配列を設定してから、session.merge(word)を使用しましたが、動作しません。