以前は機能していたこのクエリは、機能しなくなりました。(私は注釈に切り替えています。これは、残っている 2 つの壊れたテストのうちの 1 つです。)
私は3つのテーブルを持っています:
+---------------+
| Competition |
+---------------+
| competitionId |
| . . . |
+---------------+
+---------------+
| Competitor |
+---------------+
| competitorId |
| . . . |
+---------------+
+------------------------+
| CompetitionCompetitors |
+------------------------+
| competitionId |
| competitorId |
+------------------------+
そして、以前は機能していたコード/クエリは
Query query = session.createQuery(
"select c.id from Competition c join c.competitors co where co.id = :competitorId" );
query.setParameter( "competitorId", competitor.getCompetitorId() );
List list = query.list();
以下は、Hibernate からの前述の SQL ログの一部と、エラー メッセージです。
Hibernate: update db.competition set competitorId=? where competitionId=?
Hibernate: update db.competition set competitorId=? where competitionId=?
Hibernate: update db.competition set competitorId=? where competitionId=?
17:12:49,232 WARN JDBCExceptionReporter:233 - SQL Error: 1054, SQLState: 42S22
17:12:49,240 ERROR JDBCExceptionReporter:234 - Unknown column 'competitorId' in 'field list'
(正直に言うと、クエリで更新が行われるのを見て驚きました。)
コンペティションの注釈は次のとおりです。
@OneToMany( targetEntity = Competition.class )
@JoinColumn( name = "competitorId" )
private Set< Competitor > competitors = new TreeSet< Competitor >();
私は何を怒らせましたか?