我遇到搜索查詢問題。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