我使用hibernate作爲ORM工具是我的項目。它對我以前的工作很好,並正確創建表。我的最後一個表有大約200列,經過一些改變,現在我的表需要150列。所以我編輯了我的映射pojo類.Hb2ddl從中刪除了額外的屬性和getters setter。正如我可以看到drop table,在我的控制檯上創建表語法。但由hibernate生成的新表也包含一些舊的列模式值,這些舊的列模式值沒有被使用並且不存在於映射的pojo中?與Hibernate混淆hbm2ddl.auto
爲了檢查目的,當我改變pojo名稱,然後它生成150列的rigth表。
已經爲第一個條件添加了圖片。下面的mir_ids的值來自舊schema.I在我的映射pojo中沒有使用它們。
此搜索::
當檢查我嘗試pojo.It我得到正確的輸出不同的充名字(這些都是166行)
鏡像2::
那些額外的價值是不存在的,並且工作完全罰款。但我不想這樣做,我需要討論ge表名在所有項目中。
可能是什麼原因呢?如何糾正?
注意:我已編輯映射類名,它爲我工作。我得到了一個新的表,創建了151柱,因爲我需要,但休眠仍然創建舊錶本身。即使沒有映射在休眠.cfg.xml文件。
代碼hibernate.cfg.xml文件:
<property name="hibernate.connection.autocommit">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">abhijeet</property> <property
name="hibernate.connection.url">jdbc:mysql://localhost:3306/jdbctest</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.connection.pool_size">1</property>
<!-- <property name="hibernate.connection.datasource">jdbc/mysql_pool1</property> -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<mapping class="com.abhijeet.nabi.pojos.TablePojo" />
爲什麼休眠創建一個額外的表,對此我沒有任何映射。
你對財產hbm2ddl.auto有什麼價值?驗證|更新|創建| create-drop – shazin 2014-09-22 09:40:19
我每次創建新表時都使用'create'.Works。但是某些ols模式值不會被刪除。 – 2014-09-22 09:42:28
@AbhijeetPanwar does [this](http://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible-values-and-what-they-do)可以幫助你 – 2014-09-22 10:15:57