エンティティロールのコード
@Embedded
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionOfElements
@JoinTable(name = "TEST_TABLE", joinColumns = @JoinColumn(name = "ROLE_ID"))
@AttributeOverrides({
@AttributeOverride(name = "code", column = @Column(name = "TSTCODE")),
@AttributeOverride(name = "work", column = @Column(name = "TSTWRK"))
})
private List<TestID> tests;
}
TestIDクラス
@Embeddable
@AccessType("field")
public class TestID implements Serializable
{
private String code;
private String work;
// getters, setters
}
例外SQLGrammarExceptionを取得する
Caused by: java.sql.SQLException: ORA-00904: "TESTS0_"."WORK": invalid identifier
エンティティマネージャは、 @ ColumnアノテーションにあるTSTCODEとTSTWRkの代わりに、CODE列とWORK列にアクセスしようとするクエリを作成します。
何か案は?
Hibernate-アノテーション3.2.1.ga
永続性
-api1.0jboss-4.2.3.GA
アップデート:
TestIDクラスのフィールドの名前をテーブルの列名に変更すると、すべてが正常に機能します
@Embeddable
@AccessType("field")
public class TestID implements Serializable
{
private String tstcode;
private String tstwks;