JPAとHibernate
を使用して、エンティティクラスがあります
@Entity
@Table(name = "ROLES")
public class Role implements Serializable
{
@Column
private List<String> tubes;
// another fields .setters, getters
}
リストチューブ内のすべての文字列は、別のテーブル(TUBES)からの1つの行です。
テーブルROLESは、TUBESとOneToManyの関係にあります。
Aは、別のエンティティチューブを作成し、エンティティチューブにテーブルTUBESをマップできます。しかし、どうすれば別のエンティティなしでこれを作成できますか?
編集:
作った
@ElementCollection
@CollectionTable(name = "TUBES", joinColumns = @JoinColumn(name = "role_id"))
@Column(name = "tube")
private ArrayList<String> tubes;
JBossにデプロイします。そして実行時にSQLGrammarExceptionが発生します
JPAによって作成されるクエリは次のとおりです。
/ * SELECTrFROMロールrWHEREr.name =?* / select role0_.AA_ID as AA1_0_、role0_.ROLNAME as ROLNAME0_、role0_.role as PID4_0_ from PIDDB_PID_ROLE role0_ where role0_.ROLNAME =?
17:17:14,661エラー[JDBCExceptionReporter] ORA-00904: "ROLE0_"。"tube":無効な識別子