Отношение 1-1 в спящем режиме не работает: неизвестный столбец account0_.date_of_birth - PullRequest
0 голосов
/ 20 марта 2020

Я хотел бы создать отношение 1-1 в hiberante, но я получаю сообщение об ошибке:

java.sql.SQLSyntaxErrorException: Unknown column 'account0_.date_of_birth' in 'field list'

Таблица пользователей:

@Entity
@Table(name = "user")
data class User(
        @NonNull
        @Column(nullable = false)
        var login: String,
        @NonNull
        @Column(nullable = false)
        var password: String,
        @NonNull
        @Column(nullable = false)
        var email: String
) {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Int? = 0

    @OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = [CascadeType.ALL], orphanRemoval = true)
    @Nullable
    var bloodPressureInformationList: Set<BloodPressureInformation> = HashSet<BloodPressureInformation>()

    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "account_id", referencedColumnName = "id")
    var account: Account? = null

    constructor() : this("", "", "")
}

таблица учетных записей:

@Entity
@Table(name = "account")
data class Account(
        @Column(nullable = false)
        @NonNull
        var firstName: String,
        @Column(nullable = false)
        @NonNull
        var lastName: String,
        @Column(nullable = false)
        @NonNull
        var dateOfBirth: String,
        @Column(nullable = false)
        @Enumerated(EnumType.STRING)
        @NonNull
        var sex: Sex) {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Int? = 0

    @OneToOne(mappedBy = "account", fetch = FetchType.LAZY, optional = false)
    var user: User? = User()
}

Sql код миграции:

Create Table user (
id BIGINT NOT NULL AUTO_INCREMENT,
login varchar(50),
password varchar (50),
email varchar(50),
CONSTRAINT user_pk PRIMARY KEY (id)
);

Create Table blood_pressure (
id BIGINT NOT NULL AUTO_INCREMENT,
systolic_pulse INTEGER NOT NULL,
diastolic_pulse INTEGER NOT NULL,
pulse INTEGER,
description varchar(250),
CONSTRAINT blood_pressure_pk PRIMARY KEY (id)
);

ALTER TABLE blood_pressure ADD COLUMN user_id BIGINT NOT NULL DEFAULT 1;
Create Table account (
id BIGINT NOT NULL AUTO_INCREMENT,
firstName varchar(50),
lastName varchar(50),
dateOfBirth varchar(50),
sex varchar(10),
CONSTRAINT account_pk PRIMARY KEY (id)
);
ALTER TABLE user ADD COLUMN account_id BIGINT NOT NULL DEFAULT 1;

Не могли бы вы рассказать, как исправить это отношение?

1 Ответ

1 голос
/ 20 марта 2020

Исправьте опечатку: dateOfBirth varchar(50) должно быть date_of_birth varchar(50). То же самое относится и к другим столбцам с верблюжьими чемоданами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...