私は、MySQLデータベースからデータを取得するためにSpringと注釈駆動のHibernateを使用しています。私は、MySQLに配列を格納することはできませんHibernate:フィールドとしてのMySQLの行(配列/リスト)
@Entity
@Table(name="person")
public class Person implements Serializable{
@Id
String name;
//other fields
String[] languages;
//getters and setters
}
ので、私はすでに2つのテーブルを作成:
私のJavaクラス
人 |name|*other columns*|
言語|name|lang1|lang2|lang3|
すべてを値はvarchars(一部のlangXはnull)で、nameは両方の表の主キーです。
値(lang1、lang2、lang3)を配列として取得するか、PersonオブジェクトにList<String>
を入れる必要があります。私はすでにsession.createQuery("from Person where name=:name inner join languages.name as name");
を試しましたが、それは簡単ではありません。
私は助けていただければ幸いです。前もって感謝します!
DBデザインを変更するのが最も簡単です(lang1、lang2などのフィールドに番号が付けられているとヒントが出る可能性があります)。多対多の関係を調べます。 – litelite
私がやったことが本当に馬鹿だと気づいた、ありがとう!その多対多テーブルを持つことで、@ElementCollectionを使用してそれらの文字列をリストに集めました。 –