특정 속성을 가진 엔티티를 선택하려고합니다. 응용 프로그램의 속도를 느리게하는 byte[]
을 반환하는 file
특성 때문에 전체 엔터티를 검색하는 것은 옵션이 아닙니다. 그러나 그것은 ClassCastException
을 던졌습니다. 여기ClassCastException 특정 속성을 가진 엔티티를 선택할 때
@NamedQuery(name = "findAllGarbage", query = "SELECT g.filename, g.description, g.uploadDate FROM Garbage g;")
@Entity
public class Garbage {
@Id
@GeneratedValue
@Column(nullable = false)
private Long id;
@Column(nullable = false)
private String filename;
@Column(nullable = false)
private String fileType;
@Column(nullable = false)
private String uploadDate;
@Column(nullable = false)
private String destroyDate;
@Lob
@Column(nullable = false)
private byte[] file;
@Column(nullable = false)
private String description;
//Getters and Setters...
데이터 액세스를위한 EJB이다 : 여기
엔티티이다. 메서드findAllGarbage()
은
ClassCastException
을 트리거하는 메서드입니다.
@Stateless(name = "ejbs/SearchEJB")
public class SearchEJB implements ISearchEJB {
@PersistenceContext
private EntityManager em;
public List<Garbage> findAllGarbage() {
Query query = em.createNamedQuery("findAllGarbage");
List<Garbage> gList = new ArrayList();
for (Object o : query.getResultList()) {
Garbage tmpG = new Garbage();
tmpG.setFilename(((Garbage) o).getFilename());
tmpG.setUploadDate(((Garbage) o).getUploadDate());
tmpG.setDescription(((Garbage) o).getDescription());
gList.add(tmpG);
}
return gList;
}
}
대안 (나는 또한 btw를 선호한다)에 관해서는, OP는 이것이 어떻게 든 옵션이 아니라고 언급했다. 관련 질문 + 답변을 참조하라 : http://stackoverflow.com/questions/5460476/issue-rendering- jpf-custom-query-results-into-a-jsf-page – BalusC
for 루프는 클래스 캐스트 예외를 수정했습니다. 고맙습니다. 그러나 sortBy 함수는 작동하지 않습니다. – sfrj