Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用JPA在H2中创建表和加载数据_Java_Jpa_H2 - Fatal编程技术网

Java 无法使用JPA在H2中创建表和加载数据

Java 无法使用JPA在H2中创建表和加载数据,java,jpa,h2,Java,Jpa,H2,我有一个使用Hibernate和H2的JPA项目。以下是maven pom依赖项列表: com.h2数据库 氢 1.4.181 org.hibernate 冬眠核心 4.3.6.最终版本 org.hibernate 休眠实体管理器 4.3.6.最终版本 项目结构如下: 以下是献血者\u create.sql的内容: 如果不存在“血型”创建表格( `id`integer不为空, `血型字符(3)不为空, 主键(`id`) ) 如果不存在“捐赠”,则创建表( `id`bigint NOT NU

我有一个使用Hibernate和H2的JPA项目。以下是maven pom依赖项列表:


com.h2数据库
氢
1.4.181
org.hibernate
冬眠核心
4.3.6.最终版本
org.hibernate
休眠实体管理器
4.3.6.最终版本
项目结构如下:

以下是
献血者\u create.sql
的内容:

如果不存在“血型”创建表格(
`id`integer不为空,
`血型字符(3)不为空,
主键(`id`)
)
如果不存在“捐赠”,则创建表(
`id`bigint NOT NULL自动增量,
`日期`日期不为空,
`位置'varchar(150)不为空,
`施主_id`bigint不为空,
主键(`id`),
键“捐赠捐赠者”(“捐赠者id”),
约束“捐赠捐赠方”外键(`捐赠方id`)引用了“捐赠方”(`id`)
)
如果不存在“捐赠者”,则创建表(
`id`bigint NOT NULL自动增量,
`name`varchar(50)不为空,
`缅甸名称'varchar(100)不为空,
`电子邮件'varchar(50)不为空,
`facebook`varchar(50)不为空,
`phone`整数不为空,
`血型id`整数不为空,
主键(`id`),
关键字“献血者血型”(“血型id”),
约束“供体血液类型”外键(`blood\u type\u id`)引用了`blood\u type`(`id`)
)
下面是
献血者负载.sql
的内容:

插入到'blood\u type'('id','blood\u type')值中
(1"A+"),,
(2"A-"),,
(3"B+"),,
(4"B-"),,
(5"O+"),,
(6,"O-"),,
(7"AB+"),,
(8,“AB-”);
以下是
persistence.xml
的内容:


org.hibernate.jpa.HibernatePersistenceProvider
运行该程序会导致以下异常:

线程“main”javax.persistence.PersistenceException中的异常:无法执行JPA架构生成创建命令[插入'blood\u type`('id`,'blood\u type`)值]
位于org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase.acceptCreateCommands(GenerationTargetToDatabase.java:64)
位于org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator.doGeneration(JpaSchemaGenerator.java:507)
在org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator.access$300(JpaSchemaGenerator.java:69)
位于org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator$Generation.execute(JpaSchemaGenerator.java:184)
位于org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator.performGeneration(JpaSchemaGenerator.java:76)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
位于org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
在org.hibernate.jpa.HibernatePersistenceProvider.createEntityManager工厂(HibernatePersistenceProvider.java:75)
位于org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
位于javax.persistence.persistence.createEntityManagerFactory(persistence.java:55)
位于javax.persistence.persistence.createEntityManagerFactory(persistence.java:39)
位于org.bitbucket.infovillavendor.bloodconsor.Launcher.main(Launcher.java:10)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:483)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
原因:org.h2.jdbc.jdbcsql异常:未找到表“血型”;SQL语句:
插入'blood_type'('id','blood_type')值[42102-181]
位于org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
位于org.h2.message.DbException.get(DbException.java:179)
位于org.h2.message.DbException.get(DbException.java:155)
位于org.h2.command.Parser.readTableOrView(Parser.java:5227)
位于org.h2.command.Parser.readTableOrView(Parser.java:5204)
位于org.h2.command.Parser.parseInsert(Parser.java:1025)
位于org.h2.command.Parser.parsePrepared(Parser.java:401)
位于org.h2.command.Parser.parse(Parser.java:305)
位于org.h2.command.Parser.parse(Parser.java:277)
位于org.h2.command.Parser.prepareCommand(Parser.java:242)
位于org.h2.engine.Session.prepareLocal(Session.java:446)
位于org.h2.engine.Session.prepareCommand(Session.java:388)
位于org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1189)
位于org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:171)
位于org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:159)
位于org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase.acceptCreateCommands(GenerationTargetToDatabase.java:61)
... 还有18个

这里可能有什么问题?

我认为在创建或插入时不需要表名中的引号。

最好的做法是将安装到计算机上,并将create和load语句粘贴到控制台中,以便它可以突出显示错误并向您提供有意义的消息