私はid、name、description属性を持つCategoryクラスを持っています。多言語サポートのためのHibernateマッピング
多言語対応名前と説明を入力して保存することができます。
クラスの構造とハイバネートマッピングはどのようなものでしょうか?
これは注釈付きの私のコードです。しかし、私は、データベースには何も挿入できませんでした: translated_string:TID、テキスト、langCode カテゴリ:
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
private Integer id;
private Map<String, TranslatedString> name;
private Map<String, TranslatedString> description;
@ElementCollection
@CollectionTable(name = "translated_string")
@MapKeyJoinColumn(name = "langCode")
public Map<String, TranslatedString> getName() {
return this.name;
}
public void setName(Map<String, TranslatedString> name) {
this.name = name;
}
@ElementCollection
@CollectionTable(name = "translated_string")
@MapKeyJoinColumn(name = "langCode")
public Map<String, TranslatedString> getDescription() {
return this.description;
}
public void setDescription(Map<String, TranslatedString> description) {
this.description = description;
}
}
@Embeddable
public class TranslatedString {
public Integer getTid() {
return tid;
}
public void setTid(Integer tid) {
this.tid = tid;
}
private Integer tid;
private String langCode;
@Column(name = "langCode")
public String getLangCode() {
return langCode;
}
public void setLangCode(String langCode) {
this.langCode = langCode;
}
private String text;
@Column(name = "text")
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
は、私は2つのテーブル持って :ID、NAME_IDを、私はこの情報メッセージを取得しています
をdescription_id Hibernate:hibernateTemplateでカテゴリを保存するときにカテゴリ値( )に挿入します。
そして、私はIDでカテゴリを検索したい場合は、私のtranslated_stringテーブルはCATEGORY_IDまたはname_KEYフィールドを持っていないので、それは
select
name0_.Category_id as Category1_0_0_,
name0_.langCode as langCode0_,
name0_.text as text0_,
name0_.tid as tid0_,
name0_.name_KEY as name5_0_
from translated_string name0_
where name0_.Category_id=?
を実行し、私はマッピングに問題があると思います。
どこが間違っていますか?
を十分なはずである単純な文字列マップの注釈、良い質問!私の推測では、各言語に1つの索引を作成する必要があるということです(それらを混在させたくない場合)。マッピングについては考えていません。おそらく、マッピングファイルでrequest_localeを使用していますか? –
TransaltedStringとは何ですか? – Firo