在JPA2中使用字符串创建表(类似于JDBC)



使用JDBC,我可以使用String来创建表的模式:

String sql = "CREATE TABLE REGISTRATION " +
               "(id INTEGER not NULL, " +
               " first VARCHAR(255), " + 
               " last VARCHAR(255), " + 
               " age INTEGER, " + 
               " PRIMARY KEY ( id ))"; 
stmt = conn.createStatement();
stmt.executeUpdate(sql);

是否有一种方法来指定一个表在JPA2使用字符串?

编辑:

如果这不是很清楚:我的意思是,而不是创建一个@Entity类来表示我的表。我想用String来代替JDBC

No。JPA不提供任何方法来定义表(或在非关系数据库中相应的东西)。

JPA通过实体类处理数据组织规范;编写并注释为数据建模的类。JPA提供者可能会提供一些设置底层存储以匹配实体的方法,但这不是标准化的。

我不确定您是否可以通过代码做到这一点。如果表不存在,则不能创建表。大多数应用程序使用现有的数据库。

您可以使用eclipseLink(如果您使用),它可以为您创建模式。阅读此页面EclipseLink/Examples/JPA/DDL了解如何启用此功能

您需要在persistence.xml

中指定以下内容
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.create-ddl-jdbc-file-name"
     value="createDDL_ddlGeneration.jdbc"/>
<property name="eclipselink.drop-ddl-jdbc-file-name" 
       value="dropDDL_ddlGeneration.jdbc"/>

最新更新