次のクラスを実行すると:
@Entity
public class SurveyResponse {
@Id
private String assignmentId;
public String getAssignmentId() {
return assignmentId;
}
public void setAssignmentId(String assignmentId) {
this.assignmentId = assignmentId;
}
@ElementCollection
@MapKeyColumn(name="topic")
@Column(name="relevance")
@CollectionTable(name="RelevanceScore", joinColumns=@JoinColumn(name="assignmentId"))
Map<Topic, Relevance> topicRelevance = new HashMap<Topic, Relevance>(); // maps from attribute name to value
public static void main( String[] args ) {
Configuration config = new Configuration();
config.addAnnotatedClass(SurveyResponse.class);
config.configure( "hibernate.cfg.xml" );
new SchemaExport(config).create( true, true );
}
}
期待どおりにSurveyResponseテーブルとRelevanceScoreテーブルを作成します。ただし、@Idアノテーションを主キーのゲッターの上に配置すると...
@Entity
public class SurveyResponse {
private String assignmentId;
@Id
public String getAssignmentId() {
return assignmentId;
}
...
}
...テーブルRelevanceScoreの生成に失敗します。なんで?