我遇到搜索查询问题。Hibernate 3 null异常,联接获取查询
我的模型:
项目:
@Entity
@Table(name = "project")
public class Project {
@Id
@Column(name = "id")
@GeneratedValue
private Integer id;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(
name="project_tag",
joinColumns = @JoinColumn(name="project_id"),
inverseJoinColumns = @JoinColumn(name="tag_id")
)
private Set<Tag> requiredSkills;
@Column(name="name")
private String name;
@Column(name = "short_description", columnDefinition="TEXT")
private String shortdescription;
@Column(name = "extended_description", columnDefinition="TEXT")
private String extendedDescription;
}
标签:
@Entity
@Table(name="tag", uniqueConstraints = {@UniqueConstraint(columnNames={"name"})})
public class Tag {
@Id
@Column(name = "id")
@GeneratedValue
private Integer id;
@Column(name = "name")
private String name;
public int hashCode() {
return getName().hashCode();
}
}
我想搜索的项目与一些搜索字符串,我想找到项目,该字符串中的名称,简短说明,扩展说明和标签。 搜索标签是问题。
这里是我的查询:
public List<Project> search(String search) {
search = "%" + search + "%";
Query query = sessionFactory.getCurrentSession().createQuery(
"from Project p" +
" left join fetch p.requiredSkills r" +
" where p.name like :search" +
" or p.shortdescription like :search" +
" or p.extendedDescription like :search" +
" or r.name like :search"
);
query.setParameter("search", search);
query.setMaxResults(30);
return (List<Project>) query.list();
}
线 “或类似r.name:搜索” 是给我一个错误(一切正常,没有它):
java.lang.NullPointerException
myProject.model.Tag.hashCode(Tag.java:53)
我得到这个仅当找到一些项目时出错(没有返回结果时没有错误)。 任何想法?谢谢!
编辑:忘了告诉大家,项目可以有0至N个标签...
你为什么不告诉我们真实的代码?错误是一个'Tag.hashCode()',但你的Tag类没有定义任何'hashCode()'。 –
实现了hashcode()方法。如果我向你展示整个代码,你会哭泣。但我可以添加hashCode()方法,这是真的。 – Nanocom