외래 키와 고정 값을 키/맵핑 인수로 사용하여 콜렉션 (유형 맵)을 맵핑하려고합니다.상수 키로 Hibernate 맵 콜렉션
제품 유형과 제품 이름 등을 저장하는 언어 테이블이 여러 개 있습니다.
이제 액세서리가 들어있는 액세서리 테이블이 있다고 가정하면 액세서리 이름이 language.id = accessory.id 및 language.type = 'accessory'인 언어 테이블에 저장됩니다. 지도 키는 언어 코드 문자열 인 language.lang 필드 여야합니다.
지금 내가 뭘했는지에 상관없이 "language.type = 'accessory'"부분을 올바르게 가져올 수 없으며 여러 키 요소가 마음에 들지 않으므로 어쨌든 요소를 허용하지 않습니다. .
는 또한 기본적으로 일정한 세트로, 외래 키 등의 복합 구성 요소와 그것을 시도했지만, 그건 정말 작업 중 하나를하지 않았다 : 해당 클래스와 물론<class name="AccessoryTypes"
table="accessorytypes">
<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
<generator class="identity"></generator>
</id>
<map name="Name" table="ProductCode">
<key column="CompositeId" />
<map-key column="Language" type="string" />
<one-to-many class="ProductCode" />
</map>
</class>
<class name="Language"
table="Language">
<composite-id name="compositeId" class="languageKey">
<key-property name="Type"></key-property>
<key-property name="Id"></key-property>
</composite-id>
<property name="Lang" type="string"></property>
<property name="Value"></property>
</class>
합니다. 이 접근 방식은 오류를주지 않지만 Accessory 클래스의 HashMap을 채우지는 않습니다 ...
어떤 도움을 주셔서 감사합니다, 감사합니다. ,
<class name="AccessoryTypes"
table="accessorytypes">
<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
<generator class="identity"></generator>
</id>
<properties name="CompositeId" >
<property name="id" />
<property name="Type" formula="'accessory'" />
</properties>
<map name="Name" table="ProductCode">
<key property-ref="CompositeId" />
<map-key column="Language" type="string" />
<one-to-many class="ProductCode" />
</map>
</class>
및
<class name="com.swissclick.wesco.web.model.ProductCode"
table="ProductCode">
<composite-id class="com.swissclick.wesco.web.model.ProductCodeKey" mapped="true">
<key-property name="Type"></key-property>
<key-property name="id"></key-property>
</composite-id>
<property name="Language" type="string"></property>
<property name="Value"></property>
</class>
을하지만이 작동하지 않습니다 ziodberg이 제안
는 [편집] 지금이 등을 먼저하지로, property-ref 속성으로 시도 하나, 그것은 구글에 어떤 도움이되는 정보를 설정하지 않는
org.hibernate.MappingException: collection foreign key mapping has wrong number of columns: AccessoryTypes.Name type: component[Id,Type]
을 제공합니다.
어떤 아이디어가 있습니까?
콜렉션에서 column = "compositeId"를 참조했기 때문일까요? 대신 property-ref = "compositeId"를 사용하는 것이 어떻습니까? – Zoidberg