SQLSyntaxErrorException в @ManyToMany JPA - PullRequest
0 голосов
/ 30 марта 2020

Я получаю эту ошибку в моем синтаксисе MySQL, который генерируется Hibernate. Это мой класс:

@Entity(name="LogAlarms")
@Table(name="LogAlarms")
public class LogAlarm implements Serializable {


    private static final long serialVersionUID = 4198681733980071621L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="LogAlarmId")
    private Long logAlarmId;

    @Column(name="AlarmName", nullable=false, unique=true)
    private String alarmName;

    @Column(name="KeywordRelationship")
    private String keywordRelationship;

    @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @JoinTable(
        name="LogLevelCriteria",
        joinColumns={
            @JoinColumn(
                name="LogAlarmId",
                referencedColumnName="LogAlarmId",
                nullable=false
            )
        },
        inverseJoinColumns={
            @JoinColumn(
                name="LogLevelCriteriaId",
                referencedColumnName="LogLevelCriteriaId",
                nullable=false
            )
        }
    )
    private LogLevelCriteria logLevelCriteria;

    @ManyToMany(mappedBy="logAlarmList", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    private List<User> userList;

    @ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @JoinTable(
        name="XRefLogAlarmLogGroup",
        joinColumns={
            @JoinColumn(
                name="LogAlarmId",
                referencedColumnName="LogAlarmId",
                nullable=false
            )
        },
        inverseJoinColumns={
            @JoinColumn(
                name="LogGroupId",
                referencedColumnName="LogGroupId",
                nullable=false
            )
        }
    )
    private List<LogGroup> logGroupList;

    @ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @JoinTable(
        name="XRefLogAlarmKeyword",
        joinColumns={
            @JoinColumn(
                name="LogAlarmId",
                referencedColumnName="LogAlarmId",
                nullable=false
            )
        },
        inverseJoinColumns={
            @JoinColumn(
                name="KeywordId",
                referencedColumnName="KeywordId",
                nullable=false
            )
        }
    )
    private List<Keyword> keywordList;

    @ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @JoinTable(
        name="XRefLogAlarmSNSTopic",
        joinColumns={
            @JoinColumn(
                name="LogAlarmId",
                referencedColumnName="LogAlarmId",
                nullable=false
            )
        },
        inverseJoinColumns={
            @JoinColumn(
                name="SNSTopicId",
                referencedColumnName="SNSTopicId",
                nullable=false
            )
        }
    )
    private List<SNSTopic> snsTopicList;

    public LogAlarm() {
    }

    public LogAlarm(
            String alarmName,
            String keywordRelationship,
            LogLevelCriteria logLevelCriteria,
            List<User> userList,
            List<LogGroup> logGroupList,
            List<Keyword> keywordList,
            List<SNSTopic> snsTopicList
    ) {
        this.alarmName = alarmName;
        this.keywordRelationship = keywordRelationship;
        this.logLevelCriteria = logLevelCriteria;
        this.userList = userList;
        this.logGroupList = logGroupList;
        this.keywordList = keywordList;
        this.snsTopicList = snsTopicList;
    }

    public LogAlarm(
            Long logAlarmId,
            String alarmName,
            String keywordRelationship,
            LogLevelCriteria logLevelCriteria,
            List<User> userList,
            List<LogGroup> logGroupList,
            List<Keyword> keywordList,
            List<SNSTopic> snsTopicList
    ) {
        this.logAlarmId = logAlarmId;
        this.alarmName = alarmName;
        this.keywordRelationship = keywordRelationship;
        this.logLevelCriteria = logLevelCriteria;
        this.userList = userList;
        this.logGroupList = logGroupList;
        this.keywordList = keywordList;
        this.snsTopicList = snsTopicList;
    }

    public Long getLogAlarmId() {
        return this.logAlarmId;
    }

    public String getAlarmName() {
        return this.alarmName;
    }

    public void setAlarmName(String alarmName) {
        this.alarmName = alarmName;
    }

    public String getKeywordRelationship() {
        return this.keywordRelationship;
    }

    public void setKeywordRelationship(String keywordRelationship) {
        this.keywordRelationship = keywordRelationship;
    }

    public LogLevelCriteria getLogLevelCriteria() {
        return this.logLevelCriteria;
    }

    public void setLogLevelCriteria(LogLevelCriteria logLevelCriteria) {
        this.logLevelCriteria = logLevelCriteria;
    }

    public List<User> getUserList() {
        return this.userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }

    public List<LogGroup> getLogGroupList() {
        return this.logGroupList;
    }

    public void setLogGroupList(List<LogGroup> logGroupList) {
        this.logGroupList = logGroupList;
    }

    public List<Keyword> getKeywordList() {
        return this.keywordList;
    }

    public void setKeywordList(List<Keyword> keywordList) {
        this.keywordList = keywordList;
    }

    public List<SNSTopic> getSNSTopicList() {
        return this.snsTopicList;
    }

    public void setSNSTopicList(List<SNSTopic> snsTopicList) {
        this.snsTopicList = snsTopicList;
    }
}

Вот моя структура таблицы: CREATE TABLE Users (UserId INT NOT NULL AUTO_INCREMENT, имя пользователя VARCHAR (50) NOT NULL, пароль TEXT NOT NULL, Email VARCHAR (255) NOT NULL Dashboard LONGTEXT NOT NULL, PRIMARY KEY (UserId), UNIQUE (Username), UNIQUE (Email));

CREATE TABLE SNSTopics (
    SNSTopicId INT NOT NULL AUTO_INCREMENT,
    TopicName VARCHAR(50) NOT NULL,
    TopicArn VARCHAR(255) NOT NULL,
    PRIMARY KEY (SNSTopicId),
    UNIQUE (TopicName),
    UNIQUE (TopicArn)
);

CREATE TABLE LogGroups (
    LogGroupId INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(255) NOT NULL,
    PRIMARY KEY (LogGroupId),
    UNIQUE (Name)
);

CREATE TABLE Keywords (
    KeywordId INT NOT NULL AUTO_INCREMENT,
    Word VARCHAR(70),
    PRIMARY KEY (KeywordId),
    UNIQUE (Word)
);

CREATE TABLE LogLevelCriteria (
    LogLevelCriteriaId INT NOT NULL AUTO_INCREMENT,
    LogLevel VARCHAR(5) NOT NULL CHECK (LogLevel IN ('TRACE', 'DEBUG', 
'INFO', 'WARN', 'ERROR')),
    Comparison VARCHAR(2) CHECK (Comparison IN ('==', '>', '>=')),
    PRIMARY KEY (LogLevelCriteriaId),
    UNIQUE (LogLevel, Comparison)
);

CREATE TABLE LogAlarms (
    LogAlarmId INT NOT NULL AUTO_INCREMENT,
    LogLevelCriteriaId INT NOT NULL,
    AlarmName VARCHAR(255) NOT NULL,
    KeywordRelationship VARCHAR(3) CHECK (KeywordRelationship IN ('AND', 
'OR', NULL)),
    PRIMARY KEY (LogAlarmId),
    FOREIGN KEY (LogLevelCriteriaId) REFERENCES 
LogLevelCriteria(LogLevelCriteriaId),
    UNIQUE (AlarmName)
);

CREATE TABLE MetricAlarms (
    MetricAlarmId INT NOT NULL AUTO_INCREMENT,
    AlarmArn VARCHAR(100) NOT NULL,
    PRIMARY KEY (MetricAlarmId),
    UNIQUE (AlarmArn)
);

CREATE TABLE XRefUserLogAlarm (
    UserLogAlarmId INT NOT NULL AUTO_INCREMENT,
    UserId INT NOT NULL,
    LogAlarmId INT NOT NULL,
    PRIMARY KEY (UserLogAlarmId),
    FOREIGN KEY (UserId) REFERENCES Users(UserId) ON DELETE CASCADE,
    FOREIGN KEY (LogAlarmId) REFERENCES LogAlarms(LogAlarmId) ON DELETE 
CASCADE,
    UNIQUE (UserId, LogAlarmId)
);

CREATE TABLE XRefUserMetricAlarm (
    UserMetricAlarmId INT NOT NULL AUTO_INCREMENT,
    UserId INT NOT NULL,
    MetricAlarmId INT NOT NULL,
    PRIMARY KEY (UserMetricAlarmId),
    FOREIGN KEY (UserId) REFERENCES Users(UserId) ON DELETE CASCADE,
    FOREIGN KEY (MetricAlarmId) REFERENCES MetricAlarms(MetricAlarmId) ON 
DELETE CASCADE,
    UNIQUE (UserId, MetricAlarmId)
);

CREATE TABLE XRefLogAlarmLogGroup (
    LogAlarmLogGroupId INT NOT NULL AUTO_INCREMENT,
    LogAlarmId INT NOT NULL,
    LogGroupId INT NOT NULL,
    PRIMARY KEY (LogAlarmLogGroupId),
    FOREIGN KEY (LogAlarmId) REFERENCES LogAlarms(LogAlarmId) ON DELETE 
CASCADE,
    FOREIGN KEY (LogGroupId) REFERENCES LogGroups(LogGroupId) ON DELETE 
CASCADE,
    UNIQUE (LogAlarmId, LogGroupId)
);

CREATE TABLE XRefLogAlarmKeyword (
    LogAlarmKeywordId INT NOT NULL AUTO_INCREMENT,
    LogAlarmId INT NOT NULL,
    KeywordId INT NOT NULL, 
    PRIMARY KEY (LogAlarmKeywordId),
    FOREIGN KEY (LogAlarmId) REFERENCES LogAlarms(LogAlarmId) ON DELETE 
CASCADE,
    FOREIGN KEY (KeywordId) REFERENCES Keywords(KeywordId) ON DELETE CASCADE,
    UNIQUE (LogAlarmId, KeywordId)
);

CREATE TABLE XRefLogAlarmSNSTopic (
    LogAlarmSNSTopicId INT NOT NULL AUTO_INCREMENT,
    LogAlarmId INT NOT NULL,
    SNSTopicId INT NOT NULL,
    PRIMARY KEY (LogAlarmSNSTopicId),
    FOREIGN KEY (LogAlarmId) REFERENCES LogAlarms(LogAlarmId) ON DELETE 
CASCADE,
    FOREIGN KEY (SNSTopicId) REFERENCES SNSTopics(SNSTopicId) ON DELETE 
CASCADE,
    UNIQUE (LogAlarmId, SNSTopicId)
);

Всякий раз, когда я пытаюсь прочитать любые данные из этого класса, я получаю исключение SQLSyntaxErrorException, которое говорит Неизвестный столбец 'logalarm0_1_.LogAlarmId' в 'предложении' ". Я предполагаю, что это как-то связано с тем, как я присоединился к столам, но я не смог понять, что именно. Любая помощь в этом будет оценена

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