我使用 Spring 和 Hibernate 设置了一个数据库应用程序,并且我使用的是多对多关系。这是代码:
作者.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;
}