Hibernate не распознает уже определенное ограничение в базе данных - PullRequest
0 голосов
/ 08 июня 2019

Я сопоставил отношение на уровне базы данных, имя отношения FK_CLASSIFICATION_FRUITS , определенное с использованием сопоставления отношений сервера sql на уровне базы данных. В моем Java-приложении у меня есть сопоставление сущностей в классе Fruits, чтобы сидеть на уже определенной взаимосвязи, показанной ниже:

@ManyToOne
    @JoinColumn(name = "CLASSIFICATION_FK", referencedColumnName = "id")
    private Classification clasiFk;

Приведенное выше сопоставление сущностей должно установить связь между классификацией и фруктами, и это уже было определено на уровне базы данных.

Когда я пытаюсь запустить свое приложение, я получаю это сообщение об ошибке

     ... 90 more
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to ex
ecute schema management to JDBC target [alter table [FRUITS] add
 constraint FKdctshrn0ebh90up9sh5125nbb foreign key ([CLASSIFICATION_FK]) references
 [CLASSIFICATION]]

больше стековой трассировки

    ... 88 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The ALTER TABLE stat
ement conflicted with the FOREIGN KEY constraint "FKdctshrn0ebh90up9sh5125nbb ".
The conflict occurred in database "cyz", table "dbo.CLASSIFICATION", column '
ID'.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError
(SQLServerException.java:232)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServ
erStatement.java:1672)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQ
LServerStatement.java:903)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute
(SQLServerStatement.java:796)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7535)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLSe
rverConnection.java:2438)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLSer
verStatement.java:208)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLS
erverStatement.java:183)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServ
erStatement.java:721)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(Sta
tementFacade.java:114)
        at com.sun.proxy.$Proxy113.executeUpdate(Unknown Source)
        at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDa
tabaseImpl.java:56)
        ... 98 more

Вышесказанное объясняется тем, что оно не распознает уже определенное ограничение

Пожалуйста, как мне сообщить hibernate, что отношения уже определены в db

1 Ответ

0 голосов
/ 09 июня 2019

Можете ли вы попробовать, предоставив тип выборки и нулевое значение false

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "CLASSIFICATION_FK", nullable = false)
Classification clasiFk;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...