【问题标题】:When/How does jdbc percistency enities get created何时/如何创建 jdbc 持久性实体
【发布时间】:2014-07-05 05:37:00
【问题描述】:

问题:

JDBC 表何时以及如何创建? 因为奇怪的是我找不到任何用户表。 我觉得奇怪的是有一个用于 User 和 Dish 之间的多对多关系的表,但没有用户表来存储该用户的名称和密码。

结构:

  • 用户:
    • String name
    • String password
    • List<Dish> shoppingList
  • 成分:
    • String name
  • 成分数量:
    • Ingredient ingredient
    • Quantity quantity
  • 数量:
    • int quantity
    • String unit
  • 菜:
    • String name
    • int people
    • Collection<IngredientQuantity> ingredients

JDBC:

持久化单元:

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="ShoppingCalendarPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>domain.Dish</class>
    <class>domain.Ingredient</class>
    <class>domain.User</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/ShoppingCalendarDB"/>
      <property name="javax.persistence.jdbc.password" value="app"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
      <property name="javax.persistence.jdbc.user" value="app"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

【问题讨论】:

  • 可能架构是在早期应用程序部署期间创建的,并且与当前实体不一致?也许你最好删除表,使用 javax.persistence.schema-generation.create-script-source 并检查 sql-script?
  • 不,我删除了表格并重新运行了代码。还是一样。
  • User实体的配置表名是什么?用户是保留的 SQL 关键字。确保使用“USER”以外的其他名称作为表名。

标签: java jdbc persistence persistence-unit


【解决方案1】:

就像JB Nizet所说,表名“user”是保留的。

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 2011-04-21
    • 1970-01-01
    • 2018-04-26
    • 2013-04-06
    • 2012-02-23
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多