我的问题是当我利用hibernate的<prop key="hibernate.hbm2ddl.auto">create</prop>去根据product.hbm.xml 文件去创建products表的时候,创建表失败。product.hbm.xml这样写的,
<hibernate-mapping package="com.tokuii.entity">
<class name="Product" table="products">
<id name="id" column="id" type="string">
<generator class="uuid.hex" />
</id>
<many-to-one name="category" class="com.tokuii.entity.ProductCategory"
not-null="true" />
<many-to-one name="tax" class="com.tokuii.entity.Tax"
not-null="true" />
<property name="com" column="iscom" not-null="true" type="boolean">
<column name="iscom" sql-type="number(1) default 0" />                </property>
<property name="scale" column="isscale" not-null="true" type="boolean">
<column name="isscale" sql-type="number(1) default 0" /> </property>
</class>
</hibernate-mapping>
问题主要是出现在红色字体设置默认值那部分,只要把那两行{<column name="iscom" sql-type="number(1) default 0"/>和]<column name="isscale" sql-type="number(1) default 0" />}注释掉就可以创建成功,我不明白为什么希望高手给予指点。

解决方案 »

  1.   

    补充下,主要是我想知道这种根据hbm文件创建表的方式如何给那两个boolean字段在设置默认值为false。谢谢
      

  2.   

    column重复了,sql-type="number(1) default 0" 改成sql-type="number(1)" default="0"
    还有就是如果在mysql下把number改为int或bit<hibernate-mapping package="com.tokuii.entity">
    <class name="Product" table="products">
    <id name="id" column="id" type="string">
    <generator class="uuid.hex" />
    </id>
    <many-to-one name="category"
    class="com.tokuii.entity.ProductCategory" not-null="true" />
    <many-to-one name="tax" class="com.tokuii.entity.Tax"
    not-null="true" />
    <property name="com" not-null="true" type="boolean">
    <column name="iscom" sql-type="number(1)" default="0" />
    </property>
    <property name="scale" not-null="true" type="boolean">
    <column name="isscale" sql-type="number(1)" default="0" />
    </property>
    </class>
    </hibernate-mapping>
      

  3.   

     好像不是这个原因 我改了后还是不可以,我用的数据库是postgres
      

  4.   

    <property name="referencable" type="boolean" not-null="true">
    <column name="referencable" default="0" />
    </property>