⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 association_mapping.pot

📁 hibernate-distribution-3.3.1.GA-dist.zip源码
💻 POT
📖 第 1 页 / 共 2 页
字号:
      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <set name=\"addresses\" table=\"PersonAddress\">\n"      "        <key column=\"personId\"/>\n"      "        <many-to-many column=\"addressId\"\n"      "            class=\"Address\"/>\n"      "    </set>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"addressId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "</class>]]>"msgstr ""#. Tag: programlisting#: association_mapping.xml:165 association_mapping.xml:270#, no-c-formatmsgid ""      "<![CDATA[\n"      "create table Person ( personId bigint not null primary key )\n"      "create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )\n"      "create table Address ( addressId bigint not null primary key )\n"      "        ]]>"msgstr ""#. Tag: title#: association_mapping.xml:172#, no-c-formatmsgid "Bidirectional associations"msgstr ""#. Tag: title#: association_mapping.xml:175 association_mapping.xml:235#, no-c-formatmsgid "one to many / many to one"msgstr ""#. Tag: para#: association_mapping.xml:177#, no-c-formatmsgid "A <emphasis>bidirectional many-to-one association</emphasis> is the most common kind of association. (This is the standard parent/child relationship.)"msgstr ""#. Tag: programlisting#: association_mapping.xml:183#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <many-to-one name=\"address\" \n"      "        column=\"addressId\"\n"      "        not-null=\"true\"/>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"addressId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <set name=\"people\" inverse=\"true\">\n"      "        <key column=\"addressId\"/>\n"      "        <one-to-many class=\"Person\"/>\n"      "    </set>\n"      "</class>]]>"msgstr ""#. Tag: para#: association_mapping.xml:187#, no-c-formatmsgid "If you use a <literal>List</literal> (or other indexed collection) you need to set the <literal>key</literal> column of the foreign key to <literal>not null</literal>, and let Hibernate manage the association from the collections side to maintain the index of each element (making the other side virtually inverse by setting <literal>update=\"false\"</literal> and <literal>insert=\"false\"</literal>):"msgstr ""#. Tag: programlisting#: association_mapping.xml:195#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "   <id name=\"id\"/>\n"      "   ...\n"      "   <many-to-one name=\"address\"\n"      "      column=\"addressId\"\n"      "      not-null=\"true\"\n"      "      insert=\"false\"\n"      "      update=\"false\"/>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "   <id name=\"id\"/>\n"      "   ...\n"      "   <list name=\"people\">\n"      "      <key column=\"addressId\" not-null=\"true\"/>\n"      "      <list-index column=\"peopleIdx\"/>\n"      "      <one-to-many class=\"Person\"/>\n"      "   </list>\n"      "</class>]]>"msgstr ""#. Tag: para#: association_mapping.xml:197#, no-c-formatmsgid "It is important that you define <literal>not-null=\"true\"</literal> on the <literal>&lt;key&gt;</literal> element of the collection mapping if the underlying foreign key column is <literal>NOT NULL</literal>. Don't only declare <literal>not-null=\"true\"</literal> on a possible nested <literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</literal> element."msgstr ""#. Tag: para#: association_mapping.xml:211#, no-c-formatmsgid "A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> is quite common."msgstr ""#. Tag: programlisting#: association_mapping.xml:216#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <many-to-one name=\"address\" \n"      "        column=\"addressId\" \n"      "        unique=\"true\"\n"      "        not-null=\"true\"/>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"addressId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "   <one-to-one name=\"person\" \n"      "        property-ref=\"address\"/>\n"      "</class>]]>"msgstr ""#. Tag: para#: association_mapping.xml:219#, no-c-formatmsgid "A <emphasis>bidirectional one-to-one association on a primary key</emphasis> uses the special id generator."msgstr ""#. Tag: programlisting#: association_mapping.xml:224#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <one-to-one name=\"address\"/>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"foreign\">\n"      "            <param name=\"property\">person</param>\n"      "        </generator>\n"      "    </id>\n"      "    <one-to-one name=\"person\" \n"      "        constrained=\"true\"/>\n"      "</class>]]>"msgstr ""#. Tag: title#: association_mapping.xml:232#, no-c-formatmsgid "Bidirectional associations with join tables"msgstr ""#. Tag: para#: association_mapping.xml:237#, no-c-formatmsgid "A <emphasis>bidirectional one-to-many association on a join table</emphasis>. Note that the <literal>inverse=\"true\"</literal> can go on either end of the association, on the collection, or on the join."msgstr ""#. Tag: programlisting#: association_mapping.xml:243#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <set name=\"addresses\" \n"      "        table=\"PersonAddress\">\n"      "        <key column=\"personId\"/>\n"      "        <many-to-many column=\"addressId\"\n"      "            unique=\"true\"\n"      "            class=\"Address\"/>\n"      "    </set>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"addressId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <join table=\"PersonAddress\" \n"      "        inverse=\"true\" \n"      "        optional=\"true\">\n"      "        <key column=\"addressId\"/>\n"      "        <many-to-one name=\"person\"\n"      "            column=\"personId\"\n"      "            not-null=\"true\"/>\n"      "    </join>\n"      "</class>]]>"msgstr ""#. Tag: programlisting#: association_mapping.xml:244#, no-c-formatmsgid ""      "<![CDATA[\n"      "create table Person ( personId bigint not null primary key )\n"      "create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )\n"      "create table Address ( addressId bigint not null primary key )\n"      "        ]]>"msgstr ""#. Tag: para#: association_mapping.xml:251#, no-c-formatmsgid "A <emphasis>bidirectional one-to-one association on a join table</emphasis> is extremely unusual, but possible."msgstr ""#. Tag: programlisting#: association_mapping.xml:256#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <join table=\"PersonAddress\" \n"      "        optional=\"true\">\n"      "        <key column=\"personId\" \n"      "            unique=\"true\"/>\n"      "        <many-to-one name=\"address\"\n"      "            column=\"addressId\" \n"      "            not-null=\"true\"\n"      "            unique=\"true\"/>\n"      "    </join>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"addressId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <join table=\"PersonAddress\" \n"      "        optional=\"true\"\n"      "        inverse=\"true\">\n"      "        <key column=\"addressId\" \n"      "            unique=\"true\"/>\n"      "        <many-to-one name=\"person\"\n"      "            column=\"personId\" \n"      "            not-null=\"true\"\n"      "            unique=\"true\"/>\n"      "    </join>\n"      "</class>]]>"msgstr ""#. Tag: para#: association_mapping.xml:264#, no-c-formatmsgid "Finally, we have a <emphasis>bidirectional many-to-many association</emphasis>."msgstr ""#. Tag: programlisting#: association_mapping.xml:268#, no-c-formatmsgid ""      "<![CDATA[<class name=\"Person\">\n"      "    <id name=\"id\" column=\"personId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <set name=\"addresses\" table=\"PersonAddress\">\n"      "        <key column=\"personId\"/>\n"      "        <many-to-many column=\"addressId\"\n"      "            class=\"Address\"/>\n"      "    </set>\n"      "</class>\n"      "\n"      "<class name=\"Address\">\n"      "    <id name=\"id\" column=\"addressId\">\n"      "        <generator class=\"native\"/>\n"      "    </id>\n"      "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"      "        <key column=\"addressId\"/>\n"      "        <many-to-many column=\"personId\"\n"      "            class=\"Person\"/>\n"      "    </set>\n"      "</class>]]>"msgstr ""#. Tag: title#: association_mapping.xml:277#, no-c-formatmsgid "More complex association mappings"msgstr ""#. Tag: para#: association_mapping.xml:279#, no-c-formatmsgid "More complex association joins are <emphasis>extremely</emphasis> rare. Hibernate makes it possible to handle more complex situations using SQL fragments embedded in the mapping document. For example, if a table with historical account information data defines <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> and <literal>effectiveStartDate</literal>columns, mapped as follows:"msgstr ""#. Tag: programlisting#: association_mapping.xml:288#, no-c-formatmsgid ""      "<![CDATA[<properties name=\"currentAccountKey\">\n"      "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"      "    <property name=\"currentAccount\" type=\"boolean\">\n"      "        <formula>case when effectiveEndDate is null then 1 else 0 end</formula>\n"      "    </property>\n"      "</properties>\n"      "<property name=\"effectiveEndDate\" type=\"date\"/>\n"      "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"msgstr ""#. Tag: para#: association_mapping.xml:290#, no-c-formatmsgid "Then we can map an association to the <emphasis>current</emphasis> instance (the one with null <literal>effectiveEndDate</literal>) using:"msgstr ""#. Tag: programlisting#: association_mapping.xml:295#, no-c-formatmsgid ""      "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"      "        property-ref=\"currentAccountKey\"\n"      "        class=\"AccountInfo\">\n"      "    <column name=\"accountNumber\"/>\n"      "    <formula>'1'</formula>\n"      "</many-to-one>]]>"msgstr ""#. Tag: para#: association_mapping.xml:297#, no-c-formatmsgid "In a more complex example, imagine that the association between <literal>Employee</literal> and <literal>Organization</literal> is maintained in an <literal>Employment</literal> table full of historical employment data. Then an association to the employee's <emphasis>most recent</emphasis> employer (the one with the most recent <literal>startDate</literal>) might be mapped this way:"msgstr ""#. Tag: programlisting#: association_mapping.xml:305#, no-c-formatmsgid ""      "<![CDATA[<join>\n"      "    <key column=\"employeeId\"/>\n"      "    <subselect>\n"      "        select employeeId, orgId \n"      "        from Employments \n"      "        group by orgId \n"      "        having startDate = max(startDate)\n"      "    </subselect>\n"      "    <many-to-one name=\"mostRecentEmployer\" \n"      "            class=\"Organization\" \n"      "            column=\"orgId\"/>\n"      "</join>]]>"msgstr ""#. Tag: para#: association_mapping.xml:307#, no-c-formatmsgid "You can get quite creative with this functionality, but it is usually more practical to handle these kinds of cases using HQL or a criteria query."msgstr ""

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -