Я использую Hibernate / JPA и у меня есть объект @Entity с именем Order, указывающий на базу данных MySQL с использованием динамической генерации таблиц Hibernate, то есть генерирует таблицы во время выполнения для объектов.Когда Hibernate создает таблицы, он создает таблицы для всех моих сущностей, кроме сущности Order.Если я переименую сущность Order во что-то другое, например StoreOrder, таблица store_order будет создана без проблем.
Кроме того, если я сделаю это, но затем аннотирую объект StoreOrder, чтобы указать, что создаваемая им таблица называется 'order' с использованием @Table (name = "order"), таблица больше не создается.
Я понимаю, что заказ - зарезервированное слово, но является ли это причиной того, что он не может создать таблицу?Это кажется странным, учитывая, что Hibernate docs использует пример сущности под названием Order.
Это не похоже на проблему MySQL, так как я могу вручную создать таблицу с именем order непосредственно в базе данных.
Вот соответствующее определение объекта сущности Order ...
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Order extends PersistentEntity {
... rest of POJO def...
}
... и соответствующий файл Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="store" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>conf/jpa/persistence-query.xml</mapping-file>
<!-- Entities -->
...other entities...
<class>ie.wtp.store.model.Order</class>
<class>ie.wtp.store.model.OrderItem</class>
<!-- Hibernate properties -->
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/store"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.query.factory_class"
value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>
<property name="hibernate.query.substitutions" value="true 1, false 0"/>
<property name="cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
Есть мысли о том, почему этот объект Order не создается, но создается, если я переименую его в StoreOrder?
Cheers
1020 * J :) 1021 *