我突然有一个休眠异常,无法找到问题。到目前为止,我的应用程序实际上运行良好,但是在某种程度上/一定程度上/当我必须进行某些更改导致错误时。但我找不到。
出现错误:
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>
答案 0 :(得分:5)
我认为您的错误是由于您在课堂上的这一陈述:
private String group = "";
我没有在日志中运行休眠的sql查询,并且运行成功。试一试。
编辑:应该是这样的:
private String group;
编辑1:“ GROUP”是SQL保留的关键字,不应用作属性名称。选中here