경로 표현식
경로 표현식은 뒤에 탐색 연산자( . ) 및 CMP(Container Managed Persistence) 또는 관계 이름이 오는 식별 변수입니다.
cmr 필드가 단일 값을 가진 경우, cmr 필드에 도달하는 경로 표현식을 더 탐색할 수 있습니다. 경로 표현식이 다중 값을 가지는 관계에 도달할 경우, 경로 표현식은 터미널이므로 더 탐색할 수 없습니다. 경로 표현식이 값 오브젝트 유형의 CMP 필드에 도달할 경우, 값 오브젝트의 속성을 탐색할 수 있습니다.
예: 값 오브젝트
SELECT object(e) FROM EmpBean e
WHERE e.address.distance('San Jose') < 10 and e.address.zip = 95037
값 속성을 검색하려는 경우, 작성기 패턴을 사용하여 값 오브젝트 속성을 관련 열에 맵핑하는 것이 가장 좋습니다. 직렬화된 형식으로 값 오브젝트를 저장한 경우, 데이터베이스에서 각 값 오브젝트를 검색하여 직렬화를 해제해야 합니다. 값 오브젝트 메소드는 동적 조회에서만 수행할 수 있습니다.
또한 경로 표현식으로 Bean 메소드를 탐색할 수 있습니다. 메소드는 원격 또는 로컬 Bean 인터페이스에서 정의해야 합니다. 메소드는 동적 조회에서만 사용할 수 있습니다. 단일 조회 명령문에서 원격 메소드와 로컬 메소드를 혼합할 수 없습니다.
조회가 원격 메소드를 포함한 경우, 조회 원격 인터페이스를 사용하여 동적 조회를 실행해야 합니다. 조회 원격 인터페이스를 사용하면 조회 서비스가 Bean을 활성화하고, 원격 Bean 인터페이스의 인스턴스를 작성합니다.
마찬가지로, 로컬 Bean 메소드를 포함한 조회 명령문은 조회 로컬 인터페이스로 실행해야 합니다. 그러면 조회 서비스가 Bean 및 로컬 인터페이스 인스턴스를 활성화합니다.
get 메소드를 사용하여 Bean의 CMP 및 cmr 필드에 액세스하지 마십시오.
메소드가 오버로드된 정의를 포함하는 경우, 오버로드된 메소드는 매개변수에 대해 다른 매개변수 수를 가져야 합니다.
메소드는 non-void 리턴 유형 및 메소드 인수를 가져야 하며, 리턴 유형은 byte, short, int, long, float, double, boolean, char의 기본 유형이거나 다음 목록의 랩퍼 유형이어야 합니다.
Byte, Short, Integer, Long, Float, Double, BigDecimal, String, Boolean, Character, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.util.Date
메소드의 입력 인수가 널인 경우, 메소드가 널값을 리턴하며 메소드가 호출되지 않는다고 가정합니다.
콜렉션 값을 가지는 경로 표현식은 FROM 절에서 콜렉션 멤버 선언으로 사용되고 WHERE 절에서는 IS EMPTY, MEMBER OF 및 EXISTS 술어와 함께 사용할 수 있습니다.
FROM 절 사용법 명령문 | 유효성 명령문 |
---|---|
|
확인 |
|
INVALID -- 다중값을 가지고 있기 때문에 emps를 통해 탐색할 수 없음 |
|
확인 |
|
확인 |