【发布时间】:2021-05-30 18:10:45
【问题描述】:
我在 NetBeans IDE 11.3、Hibernate ORM 5.4.31 中从 Derby 10.14.2.0 数据库生成 POJO强>。
它不会在hbm.xml 或many-to-one/one-to-one 等实体类中生成任何relationship-mappings。
我将 Derby 示例项目 用于 mcve。
我使用了 Derby 示例数据库中的两个表。
产品和采购订单
产品表在 PurchaseOrder 中被引用。
表PurchaseOrder 有FOREIGN_KEY_PRODUCT_ID.
如下图所示。
hibernate.cfg
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.DerbyTenSevenDialect</property>
<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="hibernate.connection.url">jdbc:derby://localhost:1527/sample</property>
<property name="hibernate.connection.username">app</property>
<property name="hibernate.connection.password">app</property>
<mapping resource="com/pojo/Product.hbm.xml"/>
<mapping resource="com/pojo/PurchaseOrder.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我也尝试定义休眠属性
<property name="hibernate.default_catalog">app</property>
和
<property name="hibernate.default_schema">app</property>
但不,它没有帮助。
hibernate.reveng.xml
<hibernate-reverse-engineering>
<schema-selection match-schema="APP"/>
<table-filter match-name="PRODUCT"/>
<table-filter match-name="PURCHASE_ORDER"/>
</hibernate-reverse-engineering>
PurchaseOrder.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="com.pojo.PurchaseOrder" table="PURCHASE_ORDER" schema="APP" optimistic-lock="version">
<id name="orderNum" type="int">
<column name="ORDER_NUM" />
<generator class="assigned" />
</id>
<property name="customerId" type="int">
<column name="CUSTOMER_ID" not-null="true" />
</property>
<property name="productId" type="int">
<column name="PRODUCT_ID" not-null="true" />
</property>
<property name="quantity" type="java.lang.Short">
<column name="QUANTITY" />
</property>
<property name="shippingCost" type="big_decimal">
<column name="SHIPPING_COST" precision="12" />
</property>
<property name="salesDate" type="date">
<column name="SALES_DATE" length="10" />
</property>
<property name="shippingDate" type="date">
<column name="SHIPPING_DATE" length="10" />
</property>
<property name="freightCompany" type="string">
<column name="FREIGHT_COMPANY" length="30" />
</property>
</class>
</hibernate-mapping>
在上面的 PurchaseOrder.hbm.xml 文件中,应该生成relationship mapping,但您可以看到它缺少。
为什么relationship mapping即使是Derby的示例数据库也不生成?
使用 MySQL 可以正常工作。
Hibernate 不能正确支持 Derby 吗?
什么是解决方案?
【问题讨论】:
-
提供不工作的特定表的完整详细信息,以便其他人可以尝试复制您的问题。就目前而言,您的问题无法回答,因为没有足够的信息。
-
@skomisa 非常感谢。我会提供的。
标签: hibernate netbeans derby pojo hbmxml