2017-11-05 1 views
1

EclipseLink에서 JSF, JPA 및 MySQL을 5 년 동안 사용해 왔습니다. 매우 큰 데이터 세트를 사용하는 경우 매우 빠르기 때문에 Object db로 전환하고 싶습니다. 이전 중에이 오류가 발견되었습니다. EclipseLink로 JPA에서 객체를 매개 변수로 전달했습니다. 그러나 개체 DB에서 결과를 얻으려면 개체 ID를 전달해야합니다. 나는 이것을 여러 곳에서 바꾸어야한다. enyone이이 문제를 극복하는 데 도움이 될 수 있습니다.Object db가 Object를 매개 변수로 전달하는 경우

이 코드는 EclipseLink와 MySQL에서 잘 작동합니다. 여기서는 "salesRep"객체를 매개 변수로 전달합니다.

String j = "select b from " 
      + " Bill b " 
      + " where b.billCategory=:cat " 
      + " and b.billType=:type " 
      + " and b.salesRep=:rep "; 
    Map m = new HashMap(); 
    m.put("cat", BillCategory.Loading); 
    m.put("type", BillType.Billed_Bill); 
    m.put("rep", getWebUserController().getLoggedUser()); 

은 내가 매개 변수로 객체 "영업 담당자"의 ID (long 형식)을 통과해야이 ObjectDB.Here에서 작동하도록 다음과 같이 CHAGE해야합니다.

String j = "select b from " 
      + " Bill b " 
      + " where b.billCategory=:cat " 
      + " and b.billType=:type " 
      + " and b.salesRep.id=:rep "; 
    Map m = new HashMap(); 
    m.put("cat", BillCategory.Loading); 
    m.put("type", BillType.Billed_Bill); 
    m.put("rep", getWebUserController().getLoggedUser().getId()); 
+1

ObjectDB는 첫 번째 쿼리도 지원해야합니다. 어떤 버전의 ObjectDB를 사용하고 있습니까? 어떤 오류가 있습니까? – ObjectDB

+1

JSF를 사용하여 EclipseLink에서 ObjectDB로 전환하는 방법은 http://www.objectdb.com/database/issue/48을 참조하십시오. – ObjectDB

+0

이유를 지적 해 주셔서 감사합니다. detached 객체를 사용하고있었습니다. 나는 수색 질문에있는 수정을 만들 것이다. 나는 ObjectDb를 좋아한다. –

답변

1

분리 된 엔티티 객체를 처리 할 때 EclipseLink와 ObjectDB간에 차이가 있습니다. ObjectDB의 기본 동작은 JPA 사양을 따르고 객체가 분리되면 참조 된 객체를 필드 액세스 (투명 탐색)로로드하는 것을 중지하는 것입니다. EclipseLink는 이러한 방식으로 분리 된 객체를 처리하지 않습니다.

이는 필요한 참조 된 데이터를 모두로드하기 전에 오브젝트가 분리되는 JSF 애플리케이션과 같은 상황에서 차이를 만들 수 있습니다.

하나의 솔루션 (JPA 휴대용 방식)은 오브젝트가 분리되기 전에 필요한 모든 데이터가로드되었는지 확인하는 것입니다.

또 다른 가능한 솔루션은 objectdb.temp.no-detach 시스템 속성을 설정하여 분리 된 객체에 대한 액세스 (투명 탐색)로 참조 된 객체를로드 할 수있게하는 것입니다. # 3을 this forum thread에 표시하십시오.