📄 inheritance_mapping.po
字号:
" ...\n"" </join>\n"" </subclass>\n"" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"" <join table=\"CASH_PAYMENT\">\n"" <key column=\"PAYMENT_ID\"/>\n"" ...\n"" </join>\n"" </subclass>\n"" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"" <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"" <key column=\"PAYMENT_ID\"/>\n"" ...\n"" </join>\n"" </subclass>\n""</class>]]>"msgstr ""#. Tag: para#: inheritance_mapping.xml:127#, no-c-formatmsgid """The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate ""not to fetch the <literal>ChequePayment</literal> subclass data using an ""outer join when querying the superclass."msgstr """オプションの <literal>fetch=\"select\"</literal> 宣言は、 スーパークラスのク""エリ実行時に外部結合を使って、 サブクラスの <literal>ChequePayment</literal> ""データを取得しないように指定するためのものです。"#. Tag: title#: inheritance_mapping.xml:136#, no-c-formatmsgid "Mixing table per class hierarchy with table per subclass"msgstr "table-per-subclass と table-per-class-hierarchy の混合"#. Tag: para#: inheritance_mapping.xml:138#, no-c-formatmsgid """You may even mix the table per hierarchy and table per subclass strategies ""using this approach:"msgstr """このアプローチを使用すると、table-per-hierarchy と table-per-subclass 戦略を ""組み合わせる事も可能です。"#. Tag: programlisting#: inheritance_mapping.xml:143#, no-c-formatmsgid """<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"" <generator class=\"native\"/>\n"" </id>\n"" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"" <property name=\"amount\" column=\"AMOUNT\"/>\n"" ...\n"" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"" <join table=\"CREDIT_PAYMENT\">\n"" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"" ...\n"" </join>\n"" </subclass>\n"" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"" ...\n"" </subclass>\n"" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"" ...\n"" </subclass>\n""</class>]]>"msgstr ""#. Tag: para#: inheritance_mapping.xml:145#, no-c-formatmsgid """For any of these mapping strategies, a polymorphic association to the root ""<literal>Payment</literal> class is mapped using <literal><many-to-one>""</literal>."msgstr """いずれのマッピング戦略であっても、ルートである <literal>Payment</literal> ク""ラスへの ポリモーフィックな関連は <literal><many-to-one></literal> を""使ってマッピングします。"#. Tag: programlisting#: inheritance_mapping.xml:151#, no-c-formatmsgid """<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment""\"/>]]>"msgstr ""#. Tag: title#: inheritance_mapping.xml:156#, no-c-formatmsgid "Table per concrete class"msgstr "具象クラスごとのテーブル(table-per-concrete-class)"#. Tag: para#: inheritance_mapping.xml:158#, no-c-formatmsgid """There are two ways we could go about mapping the table per concrete class ""strategy. The first is to use <literal><union-subclass></literal>."msgstr """table-per-concrete-class 戦略のマッピングに対するアプローチは、2つあります。 ""1つ目は <literal><union-subclass></literal> を利用する方法です。"#. Tag: programlisting#: inheritance_mapping.xml:163#, no-c-formatmsgid """<![CDATA[<class name=\"Payment\">\n"" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"" <generator class=\"sequence\"/>\n"" </id>\n"" <property name=\"amount\" column=\"AMOUNT\"/>\n"" ...\n"" <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"" ...\n"" </union-subclass>\n"" <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"" ...\n"" </union-subclass>\n"" <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"" ...\n"" </union-subclass>\n""</class>]]>"msgstr ""#. Tag: para#: inheritance_mapping.xml:165#, no-c-formatmsgid """Three tables are involved for the subclasses. Each table defines columns for ""all properties of the class, including inherited properties."msgstr """サブクラスごとに3つのテーブルが必要です。それぞれのテーブルは、継承プロパティ""を含んだ、 クラスの全てのプロパティに対するカラムを定義します。"#. Tag: para#: inheritance_mapping.xml:170#, no-c-formatmsgid """The limitation of this approach is that if a property is mapped on the ""superclass, the column name must be the same on all subclass tables. (We ""might relax this in a future release of Hibernate.) The identity generator ""strategy is not allowed in union subclass inheritance, indeed the primary ""key seed has to be shared accross all unioned subclasses of a hierarchy."msgstr """このアプローチには制限があります。 それは、プロパティがスーパークラスにマッピ""ングされていた場合、 全てのサブクラスにおいてカラム名が同じでなければならない""というものです。 (Hibernateの今後のリリースで緩和されるかもしれません)。 ""<union-subclass> を使った table-per-concrete-class 戦略では識別子生成戦""略を使用できません。 主キーを生成するためのシードは、全ての union subclass の""階層内で共有する必要があるからです。"#. Tag: para#: inheritance_mapping.xml:179#, no-c-formatmsgid """If your superclass is abstract, map it with <literal>abstract=\"true\"</""literal>. Of course, if it is not abstract, an additional table (defaults to ""<literal>PAYMENT</literal> in the example above) is needed to hold instances ""of the superclass."msgstr """もしスーパークラスが抽象クラスなら、<literal>abstract=\"true\"</literal>と""マッピングします。 もちろん、スーパークラスが抽象クラスでないなら、スーパーク""ラスのインスタンスを 保持するためのテーブルの追加が必要となります(上の例での""デフォルトは <literal>PAYMENT</literal> )。"#. Tag: title#: inheritance_mapping.xml:189#, no-c-formatmsgid "Table per concrete class, using implicit polymorphism"msgstr "暗黙的ポリモーフィズムを用いた table-per-concrete-class"#. Tag: para#: inheritance_mapping.xml:191#, no-c-formatmsgid "An alternative approach is to make use of implicit polymorphism:"msgstr "もう一つのアプローチは暗黙的ポリモーフィズムの使用です。"#. Tag: programlisting#: inheritance_mapping.xml:195#, no-c-formatmsgid """<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"" <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"" <generator class=\"native\"/>\n"" </id>\n"" <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"" ...\n""</class>\n""\n""<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"" <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"" <generator class=\"native\"/>\n"" </id>\n"" <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"" ...\n""</class>\n""\n""<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"" <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"" <generator class=\"native\"/>\n"" </id>\n"" <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"" ...\n""</class>]]>"msgstr ""#. Tag: para#: inheritance_mapping.xml:197#, no-c-formatmsgid """Notice that nowhere do we mention the <literal>Payment</literal> interface ""explicitly. Also notice that properties of <literal>Payment</literal> are ""mapped in each of the subclasses. If you want to avoid duplication, consider ""using XML entities (e.g. <literal>[ <!ENTITY allproperties SYSTEM ""\"allproperties.xml\"> ]</literal> in the <literal>DOCTYPE</literal> ""declartion and <literal>&allproperties;</literal> in the mapping)."msgstr """<literal>Payment</literal> インターフェイスがどこにも明示的に示されていないこ""とに注意してください。 そして、<literal>Payment</literal> プロパティがそれぞ""れのサブクラスにマッピングされていることにも注意してください。 もし重複を避け""たいのであれば、XMLエンティティの利用を考えてください。 (例: ""<literal>DOCTYPE</literal> 宣言における <literal>[ <!ENTITY allproperties ""SYSTEM \"allproperties.xml\"> ]</literal> と、マッピングにおける ""<literal>&allproperties;</literal>)"#. Tag: para#: inheritance_mapping.xml:207#, no-c-formatmsgid """The disadvantage of this approach is that Hibernate does not generate SQL ""<literal>UNION</literal>s when performing polymorphic queries."msgstr """このアプローチの欠点は、Hibernateがポリモーフィックなクエリの実行時にSQL ""<literal>UNION</literal> を生成しない点です。"#. Tag: para#: inheritance_mapping.xml:212#, no-c-formatmsgid """For this mapping strategy, a polymorphic association to <literal>Payment</""literal> is usually mapped using <literal><any></literal>."msgstr """このマッピング戦略に対しては、<literal>Payment</literal> へのポリモーフィック""な関連は 通常、<literal><any></literal> を使ってマッピングされます。"#. Tag: programlisting#: inheritance_mapping.xml:217#, no-c-formatmsgid """<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"" <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"" <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"" <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"" <column name=\"PAYMENT_CLASS\"/>\n"" <column name=\"PAYMENT_ID\"/>\n""</any>]]>"msgstr ""#. Tag: title#: inheritance_mapping.xml:222#, no-c-formatmsgid "Mixing implicit polymorphism with other inheritance mappings"msgstr "他の継承マッピングと暗黙的ポリモーフィズムの組み合わせ"#. Tag: para#: inheritance_mapping.xml:224#, no-c-formatmsgid """There is one further thing to notice about this mapping. Since the ""subclasses are each mapped in their own <literal><class></literal> ""element (and since <literal>Payment</literal> is just an interface), each of ""the subclasses could easily be part of another inheritance hierarchy! (And ""you can still use polymorphic queries against the <literal>Payment</literal> ""interface.)"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -