📄 component_mapping.pot
字号:
#. Tag: para#: component_mapping.xml:149#, no-c-formatmsgid "Of course, there can't be a reference to the purchae on the other side, for bidirectional association navigation. Remember that components are value types and don't allow shared references. A single <literal>Purchase</literal> can be in the set of an <literal>Order</literal>, but it can't be referenced by the <literal>Item</literal> at the same time."msgstr ""#. Tag: para#: component_mapping.xml:157#, no-c-formatmsgid "Even ternary (or quaternary, etc) associations are possible:"msgstr ""#. Tag: programlisting#: component_mapping.xml:159#, no-c-formatmsgid "" "<![CDATA[<class name=\"eg.Order\" .... >\n" " ....\n" " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n" " <key column=\"order_id\">\n" " <composite-element class=\"eg.OrderLine\">\n" " <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n" " <many-to-one name=\"item\" class=\"eg.Item\"/>\n" " </composite-element>\n" " </set>\n" "</class>]]>"msgstr ""#. Tag: para#: component_mapping.xml:161#, no-c-formatmsgid "Composite elements may appear in queries using the same syntax as associations to other entities."msgstr ""#. Tag: title#: component_mapping.xml:169#, no-c-formatmsgid "Components as Map indices"msgstr ""#. Tag: para#: component_mapping.xml:171#, no-c-formatmsgid "The <literal><composite-map-key></literal> element lets you map a component class as the key of a <literal>Map</literal>. Make sure you override <literal>hashCode()</literal> and <literal>equals()</literal> correctly on the component class."msgstr ""#. Tag: title#: component_mapping.xml:180#, no-c-formatmsgid "Components as composite identifiers"msgstr ""#. Tag: para#: component_mapping.xml:182#, no-c-formatmsgid "You may use a component as an identifier of an entity class. Your component class must satisfy certain requirements:"msgstr ""#. Tag: para#: component_mapping.xml:189#, no-c-formatmsgid "It must implement <literal>java.io.Serializable</literal>."msgstr ""#. Tag: para#: component_mapping.xml:194#, no-c-formatmsgid "It must re-implement <literal>equals()</literal> and <literal>hashCode()</literal>, consistently with the database's notion of composite key equality."msgstr ""#. Tag: emphasis#: component_mapping.xml:203#, no-c-formatmsgid "Note: in Hibernate3, the second requirement is not an absolutely hard requirement of Hibernate. But do it anyway."msgstr ""#. Tag: para#: component_mapping.xml:207#, no-c-formatmsgid "You can't use an <literal>IdentifierGenerator</literal> to generate composite keys. Instead the application must assign its own identifiers."msgstr ""#. Tag: para#: component_mapping.xml:212#, no-c-formatmsgid "Use the <literal><composite-id></literal> tag (with nested <literal><key-property></literal> elements) in place of the usual <literal><id></literal> declaration. For example, the <literal>OrderLine</literal> class has a primary key that depends upon the (composite) primary key of <literal>Order</literal>."msgstr ""#. Tag: programlisting#: component_mapping.xml:220#, no-c-formatmsgid "" "<![CDATA[<class name=\"OrderLine\">\n" " \n" " <composite-id name=\"id\" class=\"OrderLineId\">\n" " <key-property name=\"lineId\"/>\n" " <key-property name=\"orderId\"/>\n" " <key-property name=\"customerId\"/>\n" " </composite-id>\n" " \n" " <property name=\"name\"/>\n" " \n" " <many-to-one name=\"order\" class=\"Order\"\n" " insert=\"false\" update=\"false\">\n" " <column name=\"orderId\"/>\n" " <column name=\"customerId\"/>\n" " </many-to-one>\n" " ....\n" " \n" "</class>]]>"msgstr ""#. Tag: para#: component_mapping.xml:222#, no-c-formatmsgid "Now, any foreign keys referencing the <literal>OrderLine</literal> table are also composite. You must declare this in your mappings for other classes. An association to <literal>OrderLine</literal> would be mapped like this:"msgstr ""#. Tag: programlisting#: component_mapping.xml:228#, no-c-formatmsgid "" "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n" "<!-- the \"class\" attribute is optional, as usual -->\n" " <column name=\"lineId\"/>\n" " <column name=\"orderId\"/>\n" " <column name=\"customerId\"/>\n" "</many-to-one>]]>"msgstr ""#. Tag: para#: component_mapping.xml:230#, no-c-formatmsgid "(Note that the <literal><column></literal> tag is an alternative to the <literal>column</literal> attribute everywhere.)"msgstr ""#. Tag: para#: component_mapping.xml:235#, no-c-formatmsgid "A <literal>many-to-many</literal> association to <literal>OrderLine</literal> also uses the composite foreign key:"msgstr ""#. Tag: programlisting#: component_mapping.xml:240#, no-c-formatmsgid "" "<![CDATA[<set name=\"undeliveredOrderLines\">\n" " <key column name=\"warehouseId\"/>\n" " <many-to-many class=\"OrderLine\">\n" " <column name=\"lineId\"/>\n" " <column name=\"orderId\"/>\n" " <column name=\"customerId\"/>\n" " </many-to-many>\n" "</set>]]>"msgstr ""#. Tag: para#: component_mapping.xml:242#, no-c-formatmsgid "The collection of <literal>OrderLine</literal>s in <literal>Order</literal> would use:"msgstr ""#. Tag: programlisting#: component_mapping.xml:247#, no-c-formatmsgid "" "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n" " <key>\n" " <column name=\"orderId\"/>\n" " <column name=\"customerId\"/>\n" " </key>\n" " <one-to-many class=\"OrderLine\"/>\n" "</set>]]>"msgstr ""#. Tag: para#: component_mapping.xml:249#, no-c-formatmsgid "(The <literal><one-to-many></literal> element, as usual, declares no columns.)"msgstr ""#. Tag: para#: component_mapping.xml:253#, no-c-formatmsgid "If <literal>OrderLine</literal> itself owns a collection, it also has a composite foreign key."msgstr ""#. Tag: programlisting#: component_mapping.xml:258#, no-c-formatmsgid "" "<![CDATA[<class name=\"OrderLine\">\n" " ....\n" " ....\n" " <list name=\"deliveryAttempts\">\n" " <key> <!-- a collection inherits the composite key type -->\n" " <column name=\"lineId\"/>\n" " <column name=\"orderId\"/>\n" " <column name=\"customerId\"/>\n" " </key>\n" " <list-index column=\"attemptId\" base=\"1\"/>\n" " <composite-element class=\"DeliveryAttempt\">\n" " ...\n" " </composite-element>\n" " </set>\n" "</class>]]>"msgstr ""#. Tag: title#: component_mapping.xml:263#, no-c-formatmsgid "Dynamic components"msgstr ""#. Tag: para#: component_mapping.xml:265#, no-c-formatmsgid "You may even map a property of type <literal>Map</literal>:"msgstr ""#. Tag: programlisting#: component_mapping.xml:269#, no-c-formatmsgid "" "<![CDATA[<dynamic-component name=\"userAttributes\">\n" " <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n" " <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n" " <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n" "</dynamic-component>]]>"msgstr ""#. Tag: para#: component_mapping.xml:271#, no-c-formatmsgid "The semantics of a <literal><dynamic-component></literal> mapping are identical to <literal><component></literal>. The advantage of this kind of mapping is the ability to determine the actual properties of the bean at deployment time, just by editing the mapping document. Runtime manipulation of the mapping document is also possible, using a DOM parser. Even better, you can access (and change) Hibernate's configuration-time metamodel via the <literal>Configuration</literal> object."msgstr ""
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -