H2嵌入式数据库的模式相关问题

lon*_*rce 5 java mysql sql hibernate

我正在构建 Java Swing 桌面应用程序,但数据库有问题。在我在sql文件中创建\xe2\x80\x8b\xe2\x80\x8b模式“studenti”和表“studenti.ocjene_studenata”后,当我启动程序时,我收到以下消息。究竟会出现什么问题呢?我认为我所有的配置都是正确的。我将显示错误消息、xml 配置应用程序、sql 文件和注释变量。多谢!

\n\n
ERROR: HHH000388: Unsuccessful: create table studenti.ocjene_studenata (ID integer generated by default as identity, godina_studiranja integer, ime_studenta varchar(255), baze_podataka integer, matematika integer, napredne_baze_podataka integer, objektno_orijentirano_programiranje_2 integer, objektno_orijentirano_programiranje_1 integer, osnove_programiranja integer, programiranje integer, ocjena_mature integer, prezime_studenta varchar(255), prosjek double, primary key (ID))\nkol 18, 2014 7:05:47 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute\nERROR: Schema "STUDENTI" not found; SQL statement:\n\n    create table studenti.ocjene_studenata (\n        ID integer generated by default as identity,\n        godina_studiranja integer,\n        ime_studenta varchar(255),\n        baze_podataka integer,\n        matematika integer,\n        napredne_baze_podataka integer,\n        objektno_orijentirano_programiranje_2 integer,\n        objektno_orijentirano_programiranje_1 integer,\n        osnove_programiranja integer,\n        programiranje integer,\n        ocjena_mature integer,\n        prezime_studenta varchar(255),\n        prosjek double,\n        primary key (ID)\n    ) [90079-171]\nkol 18, 2014 7:05:47 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute\nINFO: HHH000232: Schema update complete\nkol 18, 2014 7:05:47 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions\nWARN: SQL Error: 90079, SQLState: 90079\nkol 18, 2014 7:05:47 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions\nERROR: Schema "STUDENTI" not found; SQL statement:\ninsert into studenti.ocjene_studenata (ID, godina_studiranja, ime_studenta, baze_podataka, matematika, napredne_baze_podataka, objektno_orijentirano_programiranje_2, objektno_orijentirano_programiranje_1, osnove_programiranja, programiranje, ocjena_mature, prezime_studenta, prosjek) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [90079-171]\nException in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Schema "STUDENTI" not found; SQL statement:\ninsert into studenti.ocjene_studenata (ID, godina_studiranja, ime_studenta, baze_podataka, matematika, napredne_baze_podataka, objektno_orijentirano_programiranje_2, objektno_orijentirano_programiranje_1, osnove_programiranja, programiranje, ocjena_mature, prezime_studenta, prosjek) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [90079-171]\n    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)\n    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)\n    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316)\n    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:881)\n    at hr.tvz.programiranje.baza.DatabaseUtils.spremiRezultate(DatabaseUtils.java:18)\n    at hr.tvz.programiranje.java.swing.glavni.GlavniOkvir$3.actionPerformed(GlavniOkvir.java:177)\n    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)\n    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)\n    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)\n    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)\n    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)\n    at java.awt.Component.processMouseEvent(Unknown Source)\n    at javax.swing.JComponent.processMouseEvent(Unknown Source)\n    at java.awt.Component.processEvent(Unknown Source)\n    at java.awt.Container.processEvent(Unknown Source)\n    at java.awt.Component.dispatchEventImpl(Unknown Source)\n    at java.awt.Container.dispatchEventImpl(Unknown Source)\n    at java.awt.Component.dispatchEvent(Unknown Source)\n    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)\n    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)\n    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)\n    at java.awt.Container.dispatchEventImpl(Unknown Source)\n    at java.awt.Window.dispatchEventImpl(Unknown Source)\n    at java.awt.Component.dispatchEvent(Unknown Source)\n    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)\n    at java.awt.EventQueue.access$200(Unknown Source)\n    at java.awt.EventQueue$3.run(Unknown Source)\n    at java.awt.EventQueue$3.run(Unknown Source)\n    at java.security.AccessController.doPrivileged(Native Method)\n    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)\n    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)\n    at java.awt.EventQueue$4.run(Unknown Source)\n    at java.awt.EventQueue$4.run(Unknown Source)\n    at java.security.AccessController.doPrivileged(Native Method)\n    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)\n    at java.awt.EventQueue.dispatchEvent(Unknown Source)\n    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)\n    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)\n    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)\n    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)\n    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)\n    at java.awt.EventDispatchThread.run(Unknown Source)\nCaused by: org.hibernate.exception.GenericJDBCException: Schema "STUDENTI" not found; SQL statement:\ninsert into studenti.ocjene_studenata (ID, godina_studiranja, ime_studenta, baze_podataka, matematika, napredne_baze_podataka, objektno_orijentirano_programiranje_2, objektno_orijentirano_programiranje_1, osnove_programiranja, programiranje, ocjena_mature, prezime_studenta, prosjek) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [90079-171]\n    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)\n    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)\n    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)\n    at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:146)\n    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)\n    at com.sun.proxy.$Proxy9.prepareStatement(Unknown Source)\n    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:105)\n    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166)\n    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:103)\n    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:89)\n    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:55)\n    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2936)\n    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3447)\n    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)\n    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)\n    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)\n    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)\n    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)\n    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)\n    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)\n    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)\n    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)\n    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78)\n    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208)\n    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151)\n    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)\n    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:843)\n    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:818)\n    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:822)\n    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:875)\n    ... 38 more\n\n<?xml version="1.0" encoding="UTF-8"?>\n<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">\n<persistence-unit name="HibernatePersistenceUnit" transaction-type="RESOURCE_LOCAL">\n<class>hr.tvz.programiranje.java.podaci.Podaci</class>\n<properties>\n<property name="hibernate.show_sql" value="true"/>\n<property name="hibernate.format_sql" value="true"/>\n<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>\n<property name="hibernate.connection.url" value="jdbc:h2:~/uspjehStudenata"/>\n<property name="hibernate.connection.username" value="sa"/>\n<property name="hibernate.connection.password" value=""/>\n<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>\n<property name="hibernate.hbm2ddl.auto" value="update"/>\n</properties>\n</persistence-unit>\n</persistence>\n\ncreate schema studenti;\ncreate table studenti.ocjene_studenata(\nID INT generated always as identity,\nime_studenta varchar(300) not null,\nprezime_studenta varchar (300) not null,\ngodina_studiranja int not null,\nocjena_mature int not null,\nprosjek decimal(3,2) not null,\nmatematika int not null,\nprogramiranje int not null,\nobjektno_orijentirano_programiranje_1 int not null,\nobjektno_orijentirano_programiranje_2 int not null,\nosnove_programiranja int not null,\nbaze_podataka int not null,\nnapredne_baze_podataka int not null,\nprimary key(ID)\n);\n\n@Entity\n@Table(name="studenti.ocjene_studenata")\npublic class Podaci {\n\n    @Id\n    @Column(name = "ID")\n    @GeneratedValue\n    private int ID;\n\n    @Column(name = "ime_studenta")\n    private String imeStudent;\n\n    @Column(name = "prezime_studenta")\n    private String prezimeStudent;\n\n    @Column(name = "godina_studiranja")\n    private int godinaStudiranjaInt;\n\n    @Column(name = "ocjena_mature")\n    private int ocjenaMatureInt;\n\n    @Column(name = "prosjek")\n    private double prosjekDbl;\n\n    @Column(name = "matematika")\n    private int ocjMatematika1Int;\n\n    @Column(name = "programiranje")\n    private int ocjProgramiranjeInt;\n\n    @Column(name = "objektno_orijentirano_programiranje_1")\n    private int ocjOOPIInt;\n\n    @Column(name = "objektno_orijentirano_programiranje_2")\n    private int ocjOOPIIInt;\n\n    @Column(name = "osnove_programiranja")\n    private int ocjOPInt;\n\n    @Column(name = "baze_podataka")\n    private int ocjBPInt;\n\n    @Column(name = "napredne_baze_podataka")\n    private int ocjNBPInt;\n
Run Code Online (Sandbox Code Playgroud)\n

Joh*_*0te 2

您可能想检查一下:

https://groups.google.com/forum/#!topic/h2-database/3ZL1GCcDv9M

它很好地描述了一个人创建新模式、由于模式名称区分大小写而出现错误以及解决这些错误的过程。他还提供了您在不同场景下遇到的与模式命名相关的各种错误。

他的最终解决方案实际上位于线程的底部,但我认为第一部分中的信息可能会对您的特定情况有更多帮助。

线程的最终解决方案:

为了帮助其他人避免落入我所落入的同样陷阱(无论这有多不可能),这里有一个小解释。我用来连接数据库的库将连接信息映射中找到的剩余值作为属性发送到 JDBC getConnection。我将特定语句的模式名称保留在“模式”键中,仅供内部使用。在我测试过我的项目的其他数据库上,这不是问题,但 H2 巧合地使用连接属性中的相同“架构”键来设置要与该连接一起使用的架构。由于未正确引用该值,因此引发了相应的错误。我完全困惑了,因为我认为错误来自我发送的创建表语句。