다른 엔티티 세트가 속성으로 포함 된 몇 개의 엔티티 bean이 있습니다. 나는 그들을 분류하고 삽입 할 때마다 정렬 된 상태로 유지되도록하고 싶습니다. 이 방법을 시도 :TreeSet을 사용하여 JPA 엔티티를 정렬하는 방법
@Entity
@Table(name = "Document")
public class Document implements Serializable, Comparable<Document> {
...
@ManyToOne
private Project relativeProject;
...
@Override
public int compareTo(Document d) {
long data1 = getDate().getTimeInMillis();
long data2 = d.getDate().getTimeInMillis();
if(data1 > data2)
return 1;
else
if(data2 < data1)
return -1;
else
return 0;
}
@Override
public boolean equals(Object d) {
return (getIdDocument() == ((Document)d).getIdDocument());
}
@Override
public int hashCode() {
return Long.valueOf(getIdDocument()).hashCode();
}
}
@Entity
@Table(name="Project")
public class Project implements Serializable, Comparable<Project> {
...
@OneToMany(mappedBy="relativeProject", fetch = FetchType.EAGER)
@Sort(type = SortType.NATURAL)
private SortedSet<Document> formedByDocuments;
public Progetto() {
this.formedByDocuments = new TreeSet<Document>();
}
...
}
하지만 작동하지 않습니다. 문제는 데이터베이스에 필요한 항목이 모두있는 경우에도 세션 빈이 Project
을 반환하면 Document
을 놓칠 수 있다는 것입니다. 또한 항목은 데이터베이스에서 전혀 정렬되지 않습니다.
전혀 정렬하지 않고 (HashSet
사용) 프로젝트를 다시 게시하면 모든 것이 제대로 작동하고 집합의 모든 요소를 얻을 수 있습니다 (물론 정렬 할 수는 없습니다).
누군가 내 분류 작업에서 잘못된 점을 발견하도록 도와 줄 수 있습니까?
작은 의견이지만 코드에서 영어 이름을 사용할 수 있습니다. 이렇게하면 코드를 다른 사람들과 훨씬 쉽게 공유 할 수 있습니다 (예 : 여기). 내가 'progettoRelativo'와 같은 것을 읽을 때 그것은 코드를 모호하게 만든 것처럼 보입니다. 거기에 "jkgdklgflkg"를 넣을 수도 있습니다. 나는 많은 사람들이 같은 방식으로 느끼고 이것이 좋은 대답을 얻는 기회를 낮출 수 있다고 생각합니다. –
죄송합니다. 나는 그것이 여전히 명확하다고 생각했다. (Documento -> Document, Progetto -> Project) 그러나 나는 복잡한 단어가 있다고 생각하지 않았다. – Simon
문서의 경우 equals() 및 hashCode() 메소드도 게시하십시오. – Andre