[英]Hibernate creates multiple foreign keys in database tables for bidirectional associations
但是,似乎我已經模仿了一些東西,因為當Hibernate創建表時,會創建多個外鍵,如下所示:
INFO:HHH10001501:從JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5e5595f3]獲得的連接不在自動提交模式下; 連接“本地事務”將被提交,並且連接將被設置為自動提交模式。
休眠:創建表APP.ITEMS(默認情況下以身份生成ITEM_ID整數,NAME varchar(100),NET_PRICE整數,VAT_RATE整數,CATEGORY_ID整數不為空,主鍵(ITEM_ID))
休眠:創建表APP.LIMIT(LIMIT_ID整數不為null,LIMIT_VALUE整數,主鍵(LIMIT_ID))
休眠:創建表APP.PARTNER(PARTNER_ID整數默認生成為標識,PARTNER_NAME varchar(100),主鍵(PARTNER_ID))
休眠狀態:創建表APP.TRANSACTIONS(默認情況下以身份標識生成的TRANSACTIONS_ID整數,FLOW整數不為null,NET_PRICE整數,ITEM_ID整數不為空,通知單整數,ADVICENOTE_ID整數不為空,主鍵(TRANSACTIONS_ID))
休眠:更改表APP.TRANSACTIONS添加約束UK_r7btjtpy72nugbhuia8y0xnk6唯一(ITEM_ID)
休眠:更改表APP.ADVICENOTE添加約束FK4n4r6ej5i983gk8fqj20jl899 外鍵(伙伴)引用APP.PARTNER
休眠:更改表APP.ADVICENOTE添加約束FKr96drd4j6pds8vocvsstcd2a2 外鍵(PARTNER_ID)引用APP.PARTNER
休眠:更改表APP.ITEMS添加約束FKbbkng91eiiqu522okqq0nq7pm外鍵(CATEGORY_ID)引用APP.CATEGORIES
休眠:更改表APP.TRANSACTIONS添加約束FK13kk35nfl3iff7f2cs8er8w0s 外鍵(建議)引用APP.ADVICENOTE
休眠:更改表APP.TRANSACTIONS添加約束FK8ilbnqyk8lemxj0yvbqm3p7tt外鍵(ITEM_ID)引用APP.ITEMS
休眠:更改表APP.TRANSACTIONS添加約束FKqrbn7tojjjkjyusy98a300btp 外鍵(ADVICENOTE_ID)引用APP.ADVICENOTE
休眠:從APP.CATEGORIES類別0_中選擇類別0_.NAME作為col_0_0_
休眠:從APP.ITEMS項0_中選擇項0_.ITEM_ID作為ITEM_ID1_2_,項0_.NAME作為NAME2_2_,項0_.NET_PRICE作為NET_PRIC3_2_,項0_.VAT_RATE作為VAT_RATE4_2_,項0_.CATEGORY_ID作為CATEGORY5_2_。
休眠:從APP.ITEMS項0_中選擇項0_.ITEM_ID作為ITEM_ID1_2_,項0_.NAME作為NAME2_2_,項0_.NET_PRICE作為NET_PRIC3_2_,項0_.VAT_RATE作為VAT_RATE4_2_,項0_.CATEGORY_ID作為CATEGORY5_2_。
休眠:從APP.CATEGORIES類別0_中選擇類別0_.NAME作為col_0_0_
休眠:從APP.ITEMS項0_中選擇項0_.ITEM_ID作為ITEM_ID1_2_,項0_.NAME作為NAME2_2_,項0_.NET_PRICE作為NET_PRIC3_2_,項0_.VAT_RATE作為VAT_RATE4_2_,項0_.CATEGORY_ID作為CATEGORY5_2_。
這是正常行為還是我缺少了什么?
這是我的XML映射:
Advicenote.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Feb 9, 2019, 3:57:52 PM by Hibernate Tools 4.3.1 -->
<hibernate-mapping>
<class name="classes.Advicenote" table="ADVICENOTE" schema="APP" optimistic-lock="version">
<id name="advicenoteId" type="int" column="ADVICENOTE_ID">
<generator class="native" />
</id>
<property name="advicedate" type="date" column="ADVICE_DATE" length="10" />
<property name="inOrOut" type="java.lang.Short" column="IN_OR_OUT" />
<many-to-one
name="partner" class="classes.Partner"/>
<set name="transactions" table="TRANSACTIONS" inverse="false" cascade="all" lazy="true" fetch="select">
<key column="ADVICENOTE_ID" not-null="true"/>
<one-to-many class="classes.Transactions"/>
</set>
</class>
</hibernate-mapping>
Categories.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="classes.Categories" table="CATEGORIES" schema="APP" optimistic-lock="version">
<id name="categoryId" type="int">
<column name="CATEGORY_ID" />
<generator class="native" />
</id>
<property name="name" type="string">
<column name="NAME" length="100" />
</property>
<set name="items" table="ITEMS" inverse="true" cascade="all" lazy="false" fetch="select">
<key>
<column name="CATEGORY_ID" not-null="true" />
</key>
<one-to-many class="classes.Items" />
</set>
</class>
</hibernate-mapping>
Items.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="classes.Items" table="ITEMS" schema="APP" optimistic-lock="version">
<id name="itemId" type="int" column="ITEM_ID">
<generator class="native" />
</id>
<property name="name" type="string" column="NAME" length="100"/>
<property name="netPrice" type="java.lang.Integer" column="NET_PRICE"/>
<property name="vatRate" type="java.lang.Integer" column="VAT_RATE"/>
<many-to-one name="category" class="classes.Categories" fetch="select" column="CATEGORY_ID" not-null="true" lazy="false"/>
</class>
</hibernate-mapping>
Limit.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="classes.Limit" table="LIMIT" schema="APP" optimistic-lock="version">
<id name="limitId" type="java.lang.Integer" column="LIMIT_ID">
<generator class="assigned"/>
</id>
<property name="value" type="int" column="LIMIT_VALUE" length="1000"/>
</class>
</hibernate-mapping>
Partner.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="classes.Partner" table="PARTNER" schema="APP">
<id name="partnerId" type="int">
<column name="PARTNER_ID"/>
<generator class="native"/>
</id>
<property name="partnerName" type="string" column="PARTNER_NAME" length="100"/>
<set name="advicenotes" table="ADVICENOTE" inverse="false" cascade="all" lazy="true" fetch="select">
<key column="PARTNER_ID" not-null="true"/>
<one-to-many class="classes.Advicenote" />
</set>
</class>
</hibernate-mapping>
Transactions.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="classes.Transactions" table="TRANSACTIONS" schema="APP" optimistic-lock="version">
<id name="transactionsId" type="int" column="TRANSACTIONS_ID">
<generator class="native" />
</id>
<property name="flow" type="int" column="FLOW" not-null="true" />
<property name="netPrice" type="java.lang.Integer" column="NET_PRICE" />
<many-to-one name="advicenote" class="classes.Advicenote"/>
<many-to-one name="item" class="classes.Items" fetch="select" cascade="save-update" column="ITEM_ID" unique="true" not-null="true"/>
</class>
</hibernate-mapping>
一個AdviceNote映射JoinColumn丟失
<many-to-one name="partner" class="classes.Partner">
<join-column name="PARTNER_ID"/>
</many-to-one>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.