по любой причине выводится на экран ниже журнала, когда я пытаюсь запустить мое приложение Spring boot 2.0.5, а сущность имеет односторонние отношения @ManyToOne. Журналы консоли будут очищены, если @ ManyToOne удалены , приложение загружается нормально, но ошибки не отображаются.
БД устанавливается в application.properties для создания в файле (хотя тот же журнал ошибок я получаю, если БД находится в памяти). И журнал показывает правильный SQL для создания таблиц, FK и вставки новых предопределенных строк (находится в classpath: data.sql)
Я проверил другой пост и похоже, что эту проблему нелегко решить из-за множества вариантов. Какие-либо предложения? Спасибо.
Обновление к сожалению, имя таблицы не является проблемой. Я обновил до USER_ACCOUNT и получил ту же ошибку: пользователю не хватает привилегии или объект не найден: PUBLIC.USER_ACCOUNT. Это должно быть связано с аннотацией @ManyToOne, потому что, когда я удаляю ее, все загружается нормально
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PUBLIC.USER
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.SchemaManager.getUserTable(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.ParserDDL.compileAlterTable(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.ParserDDL.compileAlter(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.ParserCommand.compilePart(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.ParserCommand.compileStatements(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Session.executeDirectStatement(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
... 45 common frames omitted
Пользовательский объект
@Entity
@Table( name = "USER" )
@Getter @Setter
@ToString
@EqualsAndHashCode
public class User
{
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
@Column( name = "USER_ID" )
private Integer id;
@Column( name = "USER_NAME", nullable = false )
private String userName;
@ManyToOne
@JoinColumn( name = "USER_STATUS_ID", referencedColumnName = "USER_STATUS_ID" , nullable = false )
private UserStatus status;
@ManyToOne
@JoinColumn( name = "USER_ROLE_ID", referencedColumnName = "USER_ROLE_ID", nullable = false )
private UserRole role;
@JsonIgnore
@Column( name = "PASSWORD", nullable = false )
private String password;
@Embedded
private Audit audit;
}
объект USerRole
@Entity
@Table( name = "USER_ROLE" )
@Getter @Setter
@ToString
@EqualsAndHashCode
public class UserRole
{
@Id
@Column( name = "USER_ROLE_ID" )
private Integer id;
@Column( name = "USER_ROLE" )
@Enumerated( EnumType.STRING )
private UserRoleEnum role;
}
HSQLDB.log
drop table user if exists
drop table user_role if exists
drop table user_status if exists
drop sequence hibernate_sequence if exists
create sequence hibernate_sequence start with 1 increment by 1
create table user (user_id integer not null, created_on date,
updated_on date, password varchar(255) not null, user_name
varchar(255) not null, user_role_id integer not null, user_status_id
integer not null, primary key (user_id))
create table user_role (user_role_id integer not null, user_role
varchar(255), primary key (user_role_id))
create table user_status (user_status_id integer not null,
user_status varchar(255), primary key (user_status_id))
alter table user add constraint FKh2wc2dtfdo8maylne7mgubowq foreign
key (user_role_id) references user_role
alter table user add constraint FKo6g0t5ih8a5bsioca8qh5ukg3 foreign
key (user_status_id) references user_status
INSERT INTO USER_STATUS VALUES(1,'PENDING_VERIFIED')
COMMIT
INSERT INTO USER_STATUS VALUES(2,'ACTIVE')
COMMIT
INSERT INTO USER_ROLE VALUES(1,'ADMIN')
COMMIT
INSERT INTO USER_ROLE VALUES(2,'USER')
COMMIT