休眠:创建表异常

时间:2018-08-26 13:23:51

标签: java spring hibernate jdbc h2

我突然有一个休眠异常,无法找到问题。到目前为止,我的应用程序实际上运行良好,但是在某种程度上/一定程度上/当我必须进行某些更改导致错误时。但我找不到。

出现错误:

2018-08-26 15:07:41.273  INFO 4580 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate Core {5.3.2.Final}
2018-08-26 15:07:41.274  INFO 4580 --- [  restartedMain] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2018-08-26 15:07:41.330  INFO 4580 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2018-08-26 15:07:41.418  INFO 4580 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2018-08-26 15:07:41.845  INFO 4580 --- [  restartedMain] org.hibernate.tuple.PojoInstantiator     : HHH000182: No default (no-argument) constructor for class: com.trademerger.trading.observable.TradeDistributingUnitExchange (class must be instantiated by Interceptor)
Hibernate: drop table single_unit_abc if exists
Hibernate: drop table trade_distributing_unit_abc if exists
Hibernate: drop table trade_distributing_unit_abc_observer_list if exists
Hibernate: drop table user_data_storage if exists
Hibernate: drop sequence if exists hibernate_sequence
Hibernate: create sequence hibernate_sequence start with 1 increment by 1
Hibernate: create table single_unit_abc (dtype varchar(31) not null, observer_id bigint not null, amount_of_coins_bought double not null, bid_active boolean not null, buy_profit double not null, id double not null, last_price double not null, order_number bigint not null, percantage_this_bot_can_take_frombtc double not null, sell_active boolean not null, sell_price double not null, sell_profit double not null, time_of_last_bid_order bigint not null, stop_received varchar(255), trade_distributing_unit_abc_objectid bigint, primary key (observer_id))
Hibernate: create table trade_distributing_unit_abc (dtype varchar(31) not null, objectid bigint not null, command integer, group varchar(255), reduce boolean,  primary key (objectid))
2018-08-26 15:07:41.931  WARN 4580 --- [  restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "create table trade_distributing_unit_abc (dtype varchar(31) not null, objectid bigint not null, command integer, group varchar(255), reduce boolean, primary key (objectid))" via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table trade_distributing_unit_abc (dtype varchar(31) not null, objectid bigint not null, command integer, group varchar(255), reduce boolean, primary key (objectid))" via JDBC Statement

Caused by: org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "CREATE TABLE TRADE_DISTRIBUTING_UNIT_ABC (DTYPE VARCHAR(31) NOT NULL, OBJECTID BIGINT NOT NULL, COMMAND INTEGER, GROUP[*] VARCHAR(255), REDUCE BOOLEAN, PRIMARY KEY (OBJECTID)) "; erwartet "identifier"
Syntax error in SQL statement "CREATE TABLE TRADE_DISTRIBUTING_UNIT_ABC (DTYPE VARCHAR(31) NOT NULL, OBJECTID BIGINT NOT NULL, COMMAND INTEGER, GROUP[*] VARCHAR(255), REDUCE BOOLEAN,  PRIMARY KEY (OBJECTID)) "; expected "identifier"; SQL statement:
create table trade_distributing_unit_abc (dtype varchar(31) not null, objectid bigint not null, command integer, group varchar(255), reduce boolean, primary key (objectid)) [42001-197]


Hibernate: create table trade_distributing_unit_abc_observer_list (trade_distributing_unit_abc_objectid bigint not null, observer_list_observer_id bigint not null)
Hibernate: create table user_data_storage (fee_storage_id bigint not null, api_key varchar(255), api_secret varchar(255), crash_indicator_active boolean not null, fee double not null, fee_must_be_paid boolean not null, lending_on boolean not null, password varchar(255), time_of_last_payment bigint not null, username varchar(255), volume_indicator_active boolean not null, primary key (fee_storage_id))
Hibernate: alter table trade_distributing_unit_abc_observer_list add constraint UK_2uiqrt4b7kfuy0tlp5l7vvfyq unique (observer_list_observer_id)
Hibernate: alter table single_unit_abc add constraint FKt4jg8bdgi9hnjp6fx4mgs27n foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc
2018-08-26 15:07:41.941  WARN 4580 --- [  restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "alter table single_unit_abc add constraint FKt4jg8bdgi9hnjp6fx4mgs27n foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc" via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table single_unit_abc add constraint FKt4jg8bdgi9hnjp6fx4mgs27n foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc" via JDBC Statement

Caused by: org.h2.jdbc.JdbcSQLException: Tabelle "TRADE_DISTRIBUTING_UNIT_ABC" nicht gefunden
Table "TRADE_DISTRIBUTING_UNIT_ABC" not found; SQL statement:
alter table single_unit_abc add constraint FKt4jg8bdgi9hnjp6fx4mgs27n foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc [42102-197]


Hibernate: alter table trade_distributing_unit_abc_observer_list add constraint FK1xf8ji3rqb6qqncywcju013qo foreign key (observer_list_observer_id) references single_unit_abc
Hibernate: alter table trade_distributing_unit_abc_observer_list add constraint FK8yjbuf5pqdfnn4rwlt9ghfgl6 foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc
2018-08-26 15:07:41.946  WARN 4580 --- [  restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "alter table trade_distributing_unit_abc_observer_list add constraint FK8yjbuf5pqdfnn4rwlt9ghfgl6 foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc" via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table trade_distributing_unit_abc_observer_list add constraint FK8yjbuf5pqdfnn4rwlt9ghfgl6 foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc" via JDBC Statement

Caused by: org.h2.jdbc.JdbcSQLException: Tabelle "TRADE_DISTRIBUTING_UNIT_ABC" nicht gefunden
Table "TRADE_DISTRIBUTING_UNIT_ABC" not found; SQL statement:
alter table trade_distributing_unit_abc_observer_list add constraint FK8yjbuf5pqdfnn4rwlt9ghfgl6 foreign key (trade_distributing_unit_abc_objectid) references trade_distributing_unit_abc [42102-197]

此类

@Entity
public abstract class TradeDistributingUnitAbc {

    //@OneToMany(mappedBy = "tradeDistributingUnitAbc", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
    @OneToMany
    private List<SingleUnitAbc> observerList = Collections.synchronizedList(new LinkedList<>());

    @Transient
    private final Logger logger = LoggerFactory.getLogger(TradeDistributingUnitAbc.class);


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long objectID;

    private Commands command;


    private String group = "";


    public TradeDistributingUnitAbc() {
    }

}

application.properties。为了进行测试,我添加了create-drop,通常我使用update,但是它什么都没有改变。

spring.datasource.url=jdbc:h2:file:~/tmv2;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE
spring.datasource.username=admin
spring.datasource.password=password
spring.datasource.driver-class-name=org.h2.Driver
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

POM依赖性:最后我在这里所做的更改是删除H2数据库依赖性下的<scope>runtime</scope>。但是即使反转也会导致相同的错误。

<dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.197</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.3.1-1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <!--      <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
                  <version>5.0.7.RELEASE</version>
              </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.3.2.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.0.3.RELEASE</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>4.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.6</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.6</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.6</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.21.0</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>2.0.0-beta.5</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito -->
        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-core -->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-core</artifactId>
            <version>2.0.0-beta.5</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito2 -->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>2.0.0-beta.5</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy -->
        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
            <version>1.8.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy-agent -->
        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
            <version>1.8.17</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.objenesis/objenesis -->
        <dependency>
            <groupId>org.objenesis</groupId>
            <artifactId>objenesis</artifactId>
            <version>2.6</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

1 个答案:

答案 0 :(得分:5)

我认为您的错误是由于您在课堂上的这一陈述:

private String group = "";

我没有在日志中运行休眠的sql查询,并且运行成功。试一试。

编辑:应该是这样的:

private String group; 

编辑1:“ GROUP”是SQL保留的关键字,不应用作属性名称。选中here