Spring と Hibernate を使用してデータベース アプリケーションをセットアップし、多対多の関係を使用しています。コードは次のとおりです。
Author.java
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "writes", joinColumns = {@JoinColumn(name = "authorId")}, inverseJoinColumns = {@JoinColumn(name = "publicationId")})
private Set<Publication> publications = new HashSet<Publication>();
パブリケーション.java
@ManyToMany(mappedBy = "publications")
private Set<Author> authors = new HashSet<Author>();
これらのコード行は writes という名前の接続テーブルを生成しますが、すべてのテーブル int に対してクエリを実行しようとすると、上記のエラーが表示されます。
これは、クエリを実行するメソッドです。
@Transactional
public List<Author> findAuthorByLastname(String lastName) {
String hql = "from Author a, Publication p, writes w where a.id = w.authorId and p.id = w.publicationId and a.lastname = :lastName";
Query q = sessionFactory.getCurrentSession().createQuery(hql);
q.setParameter("lastName", lastName);
List<Author> result = q.list();
return result;
}