2012-04-13 4 views
0

안녕하세요. JPA에 완전한 초보자입니다. 하나의 열을 기준으로 사용하여 특정 레코드 집합을 선택하려고합니다. 다음과 같이 내 개체 코드는 자동으로이 테이블 구조를 기반으로 생성되었습니다JPA 1.2 createQuery Where 절 조건

create table TEST.COMPUTERS(
     "COLUMN1" VARCHAR2(6) not null, 
     "COLUMN2" VARCHAR2(10) not null, 
     "COLUMN3" VARCHAR2(5) not null, 
     "COLUMN4" VARCHAR2(8) not null, 
     "COLUMN5" VARCHAR2(48), 
     constraint "PK" primary key ("COLUMN1","COLUMN2") 
    ); 
Entiry 클래스에 대한

생성자 코드 : 실행시

Query query = EntityManagerHelper.getEntityManager().createQuery("SELECT s from Computers s where s.column1 = :column1").setParameter("column1", "SONY LAPTOPS"); 

: 나는 다음을 수행

@Table(name = "COMPUTERS", schema = "TEST") 
public class Computers implements java.io.Serializable { 


/** full constructor */ 
     public Computers(ComputersId id, String column3, String column4, 
       String column5) { 
      this.id = id; 
      this.column3 = column3; 
      this.column4 = column4; 
      this.column5 = column5; 
     } 

      @EmbeddedId 
      public ComputersId getId() { 
      return this.id; 
     } 

     public void setId(ComputersId id) { 
     this.id = id; 
     } 
     // and then ....getter and setter methods for Column 3-5 

위의 경우 다음 오류가 발생합니다.

An error occurred while parsing the query filter "SELECT s from Computers where s.column1 = :column1". Error message: No field named "column1" in class "class Computers". 

이 부분에 대한 안내는 없습니까? 많은 감사 있습니다 .. 열 1부터

+1

jpa 1.2? 그게 뭐야? – DataNucleus

답변

2

당신이 id 필드를 통과해야하는 embededId의 일부입니다

Query query = EntityManagerHelper.getEntityManager().createQuery("SELECT s from Computers s where s.id.column1 = :column1").setParameter("column1", "SONY LAPTOPS"); 

PS : 당신의 열은 오히려 가난하게 선택한 이름을 갖고있는 것 같다 ..? 아마도 그들에게 좀 더 기술적 인 이름을 주어야할까요?

+0

감사합니다. 바스 주 (Barsju)는 문제를 해결했으며, 적절한 칼럼 이름을 사용하여 테이블을 다시 만들 것입니다 .... – stack