【问题标题】:Schema related problems with H2 embedded databaseH2 嵌入式数据库的 Schema 相关问题
【发布时间】:2014-10-11 17:02:15
【问题描述】:

我正在构建一个 Java Swing 桌面应用程序,但我的数据库有问题。我在sql文件中制作了模式“studenti”和表“studenti.ocjene_studenata”后,当我启动程序时,我收到以下消息。究竟会有什么问题?我认为我都正确配置了。我将显示消息 f 错误、xml 配置应用程序、sql 文件和注释变量。非常感谢!

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))
kol 18, 2014 7:05:47 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Schema "STUDENTI" not found; SQL statement:

    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)
    ) [90079-171]
kol 18, 2014 7:05:47 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
kol 18, 2014 7:05:47 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 90079, SQLState: 90079
kol 18, 2014 7:05:47 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Schema "STUDENTI" not found; SQL statement:
insert 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]
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Schema "STUDENTI" not found; SQL statement:
insert 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]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:881)
    at hr.tvz.programiranje.baza.DatabaseUtils.spremiRezultate(DatabaseUtils.java:18)
    at hr.tvz.programiranje.java.swing.glavni.GlavniOkvir$3.actionPerformed(GlavniOkvir.java:177)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.hibernate.exception.GenericJDBCException: Schema "STUDENTI" not found; SQL statement:
insert 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]
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:146)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
    at com.sun.proxy.$Proxy9.prepareStatement(Unknown Source)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:105)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:103)
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:89)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:55)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2936)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3447)
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78)
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:843)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:818)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:822)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:875)
    ... 38 more

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="HibernatePersistenceUnit" transaction-type="RESOURCE_LOCAL">
<class>hr.tvz.programiranje.java.podaci.Podaci</class>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
<property name="hibernate.connection.url" value="jdbc:h2:~/uspjehStudenata"/>
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>

create schema studenti;
create table studenti.ocjene_studenata(
ID INT generated always as identity,
ime_studenta varchar(300) not null,
prezime_studenta varchar (300) not null,
godina_studiranja int not null,
ocjena_mature int not null,
prosjek decimal(3,2) not null,
matematika int not null,
programiranje int not null,
objektno_orijentirano_programiranje_1 int not null,
objektno_orijentirano_programiranje_2 int not null,
osnove_programiranja int not null,
baze_podataka int not null,
napredne_baze_podataka int not null,
primary key(ID)
);

@Entity
@Table(name="studenti.ocjene_studenata")
public class Podaci {

    @Id
    @Column(name = "ID")
    @GeneratedValue
    private int ID;

    @Column(name = "ime_studenta")
    private String imeStudent;

    @Column(name = "prezime_studenta")
    private String prezimeStudent;

    @Column(name = "godina_studiranja")
    private int godinaStudiranjaInt;

    @Column(name = "ocjena_mature")
    private int ocjenaMatureInt;

    @Column(name = "prosjek")
    private double prosjekDbl;

    @Column(name = "matematika")
    private int ocjMatematika1Int;

    @Column(name = "programiranje")
    private int ocjProgramiranjeInt;

    @Column(name = "objektno_orijentirano_programiranje_1")
    private int ocjOOPIInt;

    @Column(name = "objektno_orijentirano_programiranje_2")
    private int ocjOOPIIInt;

    @Column(name = "osnove_programiranja")
    private int ocjOPInt;

    @Column(name = "baze_podataka")
    private int ocjBPInt;

    @Column(name = "napredne_baze_podataka")
    private int ocjNBPInt;

【问题讨论】:

  • 你的数据库网址是什么?
  • jdbc:h2:~/uspjehStudenata
  • 其实,用hibernate配置文件的内容更新你的问题。
  • 我的所有配置都可以从这个文件中读取,不是吗?查看xml文件。
  • 我也遇到了同样的问题,请问您是怎么​​解决的?

标签: java mysql sql hibernate


【解决方案1】:

你可能想看看这个:

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

它很好地描述了一个人创建新架构,由于架构名称区分大小写而出现错误,并解决了这些错误。他还提供了您在不同场景下与架构命名相关的各种错误。

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

来自线程的最终解决方案:

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

【讨论】:

  • 听起来不太可能,但我就是那个不可能的机会的发生,这篇文章解决了我的问题!
猜你喜欢
  • 2013-02-05
  • 2011-01-27
  • 2017-03-05
  • 2020-06-14
  • 1970-01-01
  • 2016-01-22
  • 2023-03-19
  • 2022-01-20
  • 2012-10-22
相关资源
最近更新 更多