Spring SQL: org.h2.jdbc.JdbcSQLSyntaxErrorException: синтаксическая ошибка в операторе SQL "; ожидаемый "идентификатор" JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring SQL: org.h2.jdbc.JdbcSQLSyntaxErrorException: синтаксическая ошибка в операторе SQL "; ожидаемый "идентификатор"

Сообщение Anonymous »

Я работаю над веб-приложением Spring.
Я использую базу данных mysql, но для модульных тестов я хочу запускать их в базе данных H2.
Специфический тест свойства приложения:

Код: Выделить всё

#Specific spring boot configuration for tests
spring.main.banner-mode=off
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:skel;MODE=MYSQL
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.user=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
spring.jpa.defer-datasource-initialization=true
endpoints.enabled=false
# enable test-profile
spring.profiles.active=test
Как видите, моя база данных находится в режиме MODE=MYSQL, поскольку мой data.sql находится на диалекте MySQL.
Но во время инициализации data.sql я получаю эту ошибку:

Код: Выделить всё

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement
"INSERT IGNORE INTO [*]user (username, password, first_name, last_name, enabled,
news_cycle, created_at, updated_at) VALUES('admin@example.com',
'$2a$10$BFNo8gUTorQMtikcFbYVEeAPyX5iCn5BpKglp.eJ2DrFs.bNeXgEu', 'Admin', 'Adminoso',
'TRUE', 'NEVER', '2016-01-01 00:00:00', '2016-01-01 00:00:00')"; expected
"identifier"; SQL statement:
INSERT IGNORE INTO user (username, password, first_name, last_name, enabled,
news_cycle, created_at, updated_at) VALUES('admin@example.com',
'$2a$10$BFNo8gUTorQMtikcFbYVEeAPyX5iCn5BpKglp.eJ2DrFs.bNeXgEu', 'Admin', 'Adminoso',
'TRUE', 'NEVER', '2016-01-01 00:00:00', '2016-01-01 00:00:00') [42001-212]
Полагаю, из этой ошибки вы можете увидеть оператор SQL, который вызывает проблему, другие операторы в data.sql, похоже, не вызывают проблем. например:

Код: Выделить всё

INSERT IGNORE INTO department (department_id, department_name, created_at,
updated_at) VALUES (1, 'Marketing', '2016-01-01 00:00:00', '2016-01-01 00:00:00');
Мой пользователь:

Код: Выделить всё

import at.qe.skeleton.model.facility.Department;
import at.qe.skeleton.model.facility.Room;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.Set;

/**
* Entity representing users.
*
* This class is part of the skeleton project provided for students of the
* courses "Software Architecture" and "Software Engineering" offered by the
* University of Innsbruck.
*/
@Getter
@Setter
@Entity
@EntityListeners(AuditingEntityListener.class)
public class User implements Comparable{

@Id
@Column(name = "username", length = 255)
private String username;

@Column(name = "password",nullable = false,length = 255)
private String password;

@Column(name = "first_Name",nullable = false,length = 255)
private String firstName;

@Column(name = "last_Name",nullable = false,length = 255)
private String lastName;

@Column(name = "enabled", nullable = false)
private boolean enabled;

@Column(name = "news_cycle", nullable = false)
@Enumerated(EnumType.STRING)
private NewsletterCycle newsCycle;

@ElementCollection(targetClass = UserRole.class, fetch = FetchType.EAGER)
@CollectionTable(name = "user_roles")
@Enumerated(EnumType.STRING)
private Set roles;

@ManyToOne
@JoinColumn(name = "department_id")
private Department department;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "manages_department_id", referencedColumnName = "department_id")
private Department managingDepartment;

@ManyToOne
@JoinColumn(name = "assigned_room_id")
private Room assignedRoom;

@OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE, fetch = FetchType.EAGER)
private Set absences;

@CreatedDate
@Column(name = "created_at", nullable = false)
private LocalDateTime created;

@LastModifiedDate
@Column(name = "updated_at", nullable = false)
private LocalDateTime updated;

@Override
public int compareTo(User o) {
return this.username.compareTo(o.getUsername());
}

@Override
public int hashCode() {
int hash = 7;
hash = 59 * hash + Objects.hashCode(this.getUsername());
return hash;
}

@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof User)) {
return false;
}
final User other = (User) obj;
return Objects.equals(this.username, other.getUsername());
}

@Override
public String toString() {
return "username: " + getUsername() + " name: " + getFirstName() + " " + getLastName();
}
}
Что означает эта синтаксическая ошибка SQL «ожидаемый идентификатор» в данном случае, я не могу понять.
Я попробовал создать все поля за исключением имени пользователя в обнуляемом значении пользователя, а затем попробовал тот же оператор, только вставив его с именем пользователя, подозревая, что, возможно, проблема связана с каким-то типом данных временной метки, но это ничего не изменило.
Я надеюсь кто-нибудь может помочь, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/721 ... ql-stateme
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»