나는 NodeData
과 연결된 Node
을가집니다. 이 NodeData
에는 개정이 있고 Node에는 마지막 개정 인 것을 나타내는 latestRevision
열이 있습니다.최대 절전 모드 - 상위 및 하위 테이블의 열에서 필터링 설정
아래의 집합을 latestRevision
에 필터링하여 Node
에 필터링하는 데 필요한 매핑을 찾으려고합니다.
Caused by: com.jnetdirect.jsql.JSQLException: Invalid column name 'latestRevision'.
가 뱉어 쿼리는 다음과 같습니다 : 그것은으로
는select nodedatas0_.nodeID as nodeID1_, nodedatas0_.dataKey as dataKey1_, nodedatas0_.dataOrder as dataOrder1_, nodedatas0_.revision as revision1_, nodedatas0_.nodeID as nodeID46_0_, nodedatas0_.dataKey as dataKey46_0_, nodedatas0_.dataOrder as dataOrder46_0_, nodedatas0_.revision as revision46_0_, nodedatas0_.dataValue as dataValue46_0_ from RatNodeData nodedatas0_ where nodedatas0_.revision = nodedatas0_.latestRevision and nodedatas0_.nodeID=? order by nodedatas0_.dataOrder asc
나는이 잘못 말할 수
<class name="Node" table="RatNodes">
<id name="id">
<generator class="native"/>
</id>
<set fetch="join" name="nodeDatas" table="RatNodeData" inverse="true" access="field" cascade="all-delete-orphan" order-by="dataOrder asc">
<key column="nodeID" on-delete="cascade"/>
<one-to-many class="NodeData"/>
<filter name="revisionFilter" condition="revision = latestRevision"/>
</set>
<property name="questionNumber" access="field"/>
<property name="type" access="field"/>
</class>
<class name="NodeData" table="RatNodeData">
<composite-id>
<key-property name="nodeID" access="field"/>
<key-property name="key" access="field" column="dataKey"/>
<key-property name="order" access="field" column="dataOrder"/>
<key-property name="revision" access="field"/>
</composite-id>
<property name="value" access="field" type="EncodedStringUserType" column="dataValue"/>
</class>
나는 필터를 사용이 매핑의 결과는 오류입니다 NodeData
에 latestRevision
을 찾고 있지만 그 대신에 Node
을 보도록 지시하는 방법을 모르겠습니다. 이것이 최대 절전 모드에서 가능합니까? 내가 방금 SQL을 사용했다면 꽤 간단한 쿼리와 같습니다.
Hello Philippe,이 솔루션을 사용하고 계십니까? IMHO는 좋아 보이지만 맵핑에 대해서도 듣고 싶습니다! 당신은 http://stackoverflow.com/questions/24283199/use-a-filter-within-a-composite-id-in-hibernate를보실 수 있습니다 – Gaucho
나는 잠시 동안 그 프로젝트에서 일하지는 않았지만 멀리까지 내가 알듯이 그것은 여전히 그런 식으로 일하고 있습니다. –
감사합니다. Philippe! 제가 그 일을 처리 할 수 있다면 알려 드리겠습니다. 건배 – Gaucho