'Eclipselink : can't create foreignkey constraint

Eclipselink (with Payara 5.2021.3) is not able to generate a foreignkey constraint if you add a foreignKey in the annotation @JoinColumn. It works fine without it.

Hibernate (Wildfly-25.0.1.Final) works fine with the annotation.

Is it a bug in EclipseLink ?

I use H2 database.

My properties in persistence.xml

      <properties>
         <property name="javax.persistence.schema-generation.database.action" value="drop-and-create" />
<!--          <property name="javax.persistence.schema-generation.database.action" value="create" /> -->
         <!-- Properties for Hibernate -->
         <property name="hibernate.show_sql" value="true" />
         <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
         <property name="hibernate.jdbc.batch_size" value="25" />
         <property name="hibernate.jdbc.time_zone" value="UTC"/>
<!--          <property name="hibernate.order_inserts" value="true" /> -->
<!--          <property name="hibernate.order_updates" value="true" /> -->
         <property name="eclipselink.logging.level.sql" value="FINE"/>
         <property name="eclipselink.logging.parameters" value="true"/>
         <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.H2Platform"/>
      </properties>

You get this exception :

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.7.payara-p3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: java.lang.reflect.UndeclaredThrowableException
Error Code: 0
Call: ALTER TABLE Unite_Compte_SIX ADD CONSTRAINT FK_UniteCompteSIX_PlaceCotation FOREIGN KEY () REFERENCES  ()
Query: DataModifyQuery(sql="ALTER TABLE Unite_Compte_SIX ADD CONSTRAINT FK_UniteCompteSIX_PlaceCotation FOREIGN KEY () REFERENCES  ()")
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:342)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:691)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:567)
    at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2099)
    at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:603)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:277)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:263)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:306)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:286)
    at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:87)
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:911)
    at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:3356)
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1898)
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1880)
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1830)
    at org.eclipse.persistence.internal.sessions.AbstractSession.priviledgedExecuteNonSelectingCall(AbstractSession.java:5223)
    at org.eclipse.persistence.tools.schemaframework.TableDefinition.createForeignConstraintsOnDatabase(TableDefinition.java:896)
    at org.eclipse.persistence.tools.schemaframework.SchemaManager.createForeignConstraints(SchemaManager.java:194)
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createConstraints(TableCreator.java:120)
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createTables(TableCreator.java:186)
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createTables(TableCreator.java:151)
    at org.eclipse.persistence.tools.schemaframework.TableCreator.createTables(TableCreator.java:143)
    at org.eclipse.persistence.tools.schemaframework.SchemaManager.createDefaultTables(SchemaManager.java:1030)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.generateDefaultTables(EntityManagerFactoryProvider.java:110)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeDDLToDatabase(EntityManagerSetupImpl.java:4450)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeMetadataDDLToDatabase(EntityManagerSetupImpl.java:4517)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeDDL(EntityManagerSetupImpl.java:4416)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.writeDDL(EntityManagerSetupImpl.java:4296)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:819)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:222)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:200)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getDatabaseSession(EntityManagerFactoryImpl.java:542)
    at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactoryImpl(PersistenceProvider.java:388)
    at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactory(PersistenceProvider.java:316)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:207)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:114)
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:267)
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:571)
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:286)
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:183)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:1131)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:504)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:576)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:272)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:240)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:294)
    at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:136)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
    at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:356)
    at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:335)
    at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:189)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.sql.SQLException: java.lang.reflect.UndeclaredThrowableException
    at com.sun.gjc.spi.jdbc40.ProfiledConnectionWrapper40.prepareStatement(ProfiledConnectionWrapper40.java:256)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1595)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1544)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:806)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:628)
    ... 102 more
Caused by: java.lang.reflect.UndeclaredThrowableException
    at com.sun.proxy.$Proxy472.prepareStatement(Unknown Source)
    at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:609)
    at com.sun.gjc.spi.jdbc40.ProfiledConnectionWrapper40.prepareCachedStatement(ProfiledConnectionWrapper40.java:386)
    at com.sun.gjc.spi.jdbc40.ProfiledConnectionWrapper40.prepareCachedStatement(ProfiledConnectionWrapper40.java:67)
    at com.sun.gjc.spi.ManagedConnectionImpl.prepareCachedStatement(ManagedConnectionImpl.java:1080)
    at com.sun.gjc.spi.jdbc40.ProfiledConnectionWrapper40.prepareStatement(ProfiledConnectionWrapper40.java:252)
    ... 106 more
Caused by: java.lang.reflect.InvocationTargetException
    at jdk.internal.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.sun.gjc.spi.JdbcObjectsFactory$1.invoke(JdbcObjectsFactory.java:143)
    ... 112 more
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Erreur de syntaxe dans l'instruction SQL "ALTER TABLE UNITE_COMPTE_SIX ADD CONSTRAINT FK_UNITECOMPTESIX_PLACECOTATION FOREIGN KEY ()[*] REFERENCES  () "; attendu "identifier"
Syntax error in SQL statement "ALTER TABLE UNITE_COMPTE_SIX ADD CONSTRAINT FK_UNITECOMPTESIX_PLACECOTATION FOREIGN KEY ()[*] REFERENCES  () "; expected "identifier"; SQL statement:
ALTER TABLE Unite_Compte_SIX ADD CONSTRAINT FK_UniteCompteSIX_PlaceCotation FOREIGN KEY () REFERENCES  () [42001-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:451)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.getSyntaxError(DbException.java:243)
    at org.h2.command.Parser.readColumnIdentifier(Parser.java:4530)
    at org.h2.command.Parser.parseIndexColumnList(Parser.java:1321)
    at org.h2.command.Parser.parseAlterTableAddConstraintIf(Parser.java:7717)
    at org.h2.command.Parser.parseAlterTable(Parser.java:7204)
    at org.h2.command.Parser.parseAlter(Parser.java:6546)
    at org.h2.command.Parser.parsePrepared(Parser.java:828)
    at org.h2.command.Parser.parse(Parser.java:788)
    at org.h2.command.Parser.parse(Parser.java:760)
    at org.h2.command.Parser.prepareCommand(Parser.java:683)
    at org.h2.engine.Session.prepareLocal(Session.java:627)
    at org.h2.server.TcpServerThread.process(TcpServerThread.java:270)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:175)
    at java.base/java.lang.Thread.run(Thread.java:834)

    at org.h2.engine.SessionRemote.done(SessionRemote.java:629)
    at org.h2.command.CommandRemote.prepare(CommandRemote.java:83)
    at org.h2.command.CommandRemote.<init>(CommandRemote.java:49)
    at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:499)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
    at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:73)
    at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:677)
    ... 116 more
]]

Here is my entity :

@Audited
@Entity
@Table(name="Unite_Compte_SIX"
, uniqueConstraints= {@UniqueConstraint(columnNames={"isin"}, name="IDX_UniteCompteSIX_ISIN")}
, indexes= {
    @Index(name="IDX_UniteCompteSIX_Label", columnList="label"),
    @Index(name="IDX_UniteCompteSIX_NatureTitre", columnList="nature_titre"),
    @Index(name="IDX_UniteCompteSIX_FreqValo", columnList="frequence_valorisation"),
    @Index(name="IDX_UniteCompteSIX_SRRI", columnList="srri"),
    @Index(name="IDX_UniteCompteSIX_Category", columnList="category"),
    @Index(name="IDX_UniteCompteSIX_SFDR", columnList="sfdr"),
    @Index(name="IDX_UniteCompteSIX_ESG_Categ_G", columnList="esg_categ_german_market"),
    @Index(name="IDX_UniteCompteSIX_ESG_Focus_T", columnList="esg_focus_type"),
    @Index(name="IDX_UniteCompteSIX_AmfDoctrine", columnList="amf_doctrine"),
    @Index(name="IDX_UniteCompteSIX_IsChanged", columnList="is_changed"),
}
)
public class UniteCompteSIX implements Serializable, HasIdCode, Cloneable {
    private static final long serialVersionUID = 1L;

    @Version
    @DiffIgnore
    @Column(name="optlock", nullable=false)
    private long version;

    @Id
    @Column(name="unite_compte_six_id")
    private Long id;

    @OneToOne(fetch=FetchType.LAZY)
    @ShallowReference
    @MapsId
    @JoinColumn(name="unite_compte_six_id", foreignKey = @ForeignKey(name="FK_UniteCompteSIX_UniteCompte"))
    @NotNull
    private UniteCompte uniteCompte;
    
    @Column(name="is_changed", nullable=false)
    private boolean isChanged;

    @ManyToOne(fetch=FetchType.LAZY)
    @ShallowReference
    @JoinColumn(name="societe_gestion_six_id", foreignKey = @ForeignKey(name="FK_UniteCompteSIX_SocieteGestionSIX"))
    private SocieteGestionSIX societeGestion;

    @Column(name="label", nullable=false)
    @NotBlank
    @Size(max=30)
    private String label;

    @Column(name="label_long")
    @Size(max=46)
    private String labelLong;

    @Column(name="isin", nullable=false)
    @Size(min=12, max=12)
    @gbt.validation.ISIN
    @NotBlank
    @Pattern(regexp = ISIN.PATTERN_ISIN_FULL)
    private String isin;

    @Column(name="nature_titre", nullable=false, length=4)
    @NotNull
    @Convert(converter=gbt.uc.six.model.converter.NatureTitreConverter.class)
    private NatureTitre natureTitre = NatureTitre.UNKNWN;

    @Column(name="rate_emission", precision=9, scale=5, nullable=false)
    @NotNull
    @Convert(converter=gbt.model.converter.RateBDConverter.class)
    private RateBD rateEmission = RateBD.ZERO;

    @Column(name="rate_rachat", nullable=false, precision=9, scale=5)
    @Convert(converter=gbt.model.converter.RateBDConverter.class)
    @NotNull
    private RateBD rateRachat = RateBD.ZERO;

    @Column(name="rate_gestion_year", precision=9, scale=5, nullable=false)
    @Convert(converter=gbt.model.converter.RateBDConverter.class)
    @NotNull
    private RateBD rateGestionYear = RateBD.ZERO;

    @Column(name="frequence_valorisation", nullable=false, length=4)
    @NotNull
    @Convert(converter=gbt.uc.six.model.converter.FrequenceValorisationConverter.class)
    private FrequenceValorisation frequenceValorisation = FrequenceValorisation.UNKNWN;

    //can be null
    @Column(name="srri", length=4)
    @Convert(converter=gbt.uc.six.model.converter.SRRIConverter.class)
    private SRRI srri;
    
    @Column(name="min_duration", nullable=false)
    @Size(max=3)
    @NotNull
    private String minDuration = "0";

    @Column(name="category", nullable=false, length=5)
    @NotNull
    @Convert(converter=gbt.uc.six.model.converter.NlleClassifEPTypeConverter.class)
    private NlleClassifEPType category = NlleClassifEPType.UNKNWN;

    @Column(name="rate_comm_perf", nullable=false, precision=12, scale=8)
    @Convert(converter=gbt.model.converter.RateBDConverter.class)
    @NotNull
    private RateBD rateCommPerf = RateBD.ZERO;

    @Column(name="sfdr", nullable=false, length=2)
    @NotNull
    @Convert(converter=gbt.uc.six.model.converter.SFDRClassificationConverter.class)
    private SFDRClassification sfdr = SFDRClassification.UNKNWN;

    @Column(name="esg_categ_german_market", nullable=false, length=2)
    @Convert(converter=gbt.uc.six.model.converter.ESGCategGermanMarketConverter.class)
    @NotNull
    private ESGCategGermanMarket esgCategGermanMarket = ESGCategGermanMarket.UNKNWN;

    @Column(name="esg_focus_type", nullable=false, length=2)
    @Convert(converter=gbt.uc.six.model.converter.ESGFocusTypeConverter.class)
    @NotNull
    private ESGFocusType esgFocusType = ESGFocusType.UNKNWN;

    @Column(name="amf_doctrine", nullable=false, length=2)
    @Convert(converter=gbt.uc.six.model.converter.AMFDoctrineConverter.class)
    @NotNull
    private AMFDoctrine amfDoctrine = AMFDoctrine.UNKNWN;

    @Column(name="esg_labels")
    @Size(max=30)
    private String esgLabels;

    @ManyToOne(fetch=FetchType.LAZY)
    @ShallowReference
    @JoinColumn(name="place_cotation_id", foreignKey = @ForeignKey(name="FK_UniteCompteSIX_PlaceCotation"))
    private PlaceCotation placeCotation;
}

Here is the result. You can see that the foreign key constraints are missing :

-- Drop table

-- DROP TABLE PUBLIC.UNITE_COMPTE_SIX;

CREATE TABLE PUBLIC.UNITE_COMPTE_SIX (
    AMF_DOCTRINE VARCHAR(2) NOT NULL,
    CATEGORY VARCHAR(5) NOT NULL,
    ESG_CATEG_GERMAN_MARKET VARCHAR(2) NOT NULL,
    ESG_FOCUS_TYPE VARCHAR(2) NOT NULL,
    ESG_LABELS VARCHAR,
    FREQUENCE_VALORISATION VARCHAR(4) NOT NULL,
    UNITE_COMPTE_SIX_ID BIGINT NOT NULL,
    IS_CHANGED BOOLEAN NOT NULL,
    ISIN VARCHAR NOT NULL,
    LABEL VARCHAR NOT NULL,
    LABEL_LONG VARCHAR,
    MIN_DURATION VARCHAR NOT NULL,
    NATURE_TITRE VARCHAR(4) NOT NULL,
    RATE_COMM_PERF DECIMAL(12,8) NOT NULL,
    RATE_EMISSION DECIMAL(9,5) NOT NULL,
    RATE_GESTION_YEAR DECIMAL(9,5) NOT NULL,
    RATE_RACHAT DECIMAL(9,5) NOT NULL,
    SFDR VARCHAR(2) NOT NULL,
    SRRI VARCHAR(4),
    OPTLOCK BIGINT NOT NULL,
    PLACE_COTATION_ID BIGINT,
    SOCIETE_GESTION_SIX_ID BIGINT,
    CONSTRAINT CONSTRAINT_4F PRIMARY KEY (UNITE_COMPTE_SIX_ID)
);
CREATE INDEX IDX_UNITECOMPTESIX_AMFDOCTRINE ON PUBLIC.UNITE_COMPTE_SIX (AMF_DOCTRINE);
CREATE INDEX IDX_UNITECOMPTESIX_CATEGORY ON PUBLIC.UNITE_COMPTE_SIX (CATEGORY);
CREATE INDEX IDX_UNITECOMPTESIX_ESG_CATEG_G ON PUBLIC.UNITE_COMPTE_SIX (ESG_CATEG_GERMAN_MARKET);
CREATE INDEX IDX_UNITECOMPTESIX_ESG_FOCUS_T ON PUBLIC.UNITE_COMPTE_SIX (ESG_FOCUS_TYPE);
CREATE INDEX IDX_UNITECOMPTESIX_FREQVALO ON PUBLIC.UNITE_COMPTE_SIX (FREQUENCE_VALORISATION);
CREATE INDEX IDX_UNITECOMPTESIX_ISCHANGED ON PUBLIC.UNITE_COMPTE_SIX (IS_CHANGED);
CREATE UNIQUE INDEX IDX_UNITECOMPTESIX_ISIN_INDEX_4 ON PUBLIC.UNITE_COMPTE_SIX (ISIN);
CREATE INDEX IDX_UNITECOMPTESIX_LABEL ON PUBLIC.UNITE_COMPTE_SIX (LABEL);
CREATE INDEX IDX_UNITECOMPTESIX_NATURETITRE ON PUBLIC.UNITE_COMPTE_SIX (NATURE_TITRE);
CREATE INDEX IDX_UNITECOMPTESIX_SFDR ON PUBLIC.UNITE_COMPTE_SIX (SFDR);
CREATE INDEX IDX_UNITECOMPTESIX_SRRI ON PUBLIC.UNITE_COMPTE_SIX (SRRI);
CREATE UNIQUE INDEX PRIMARY_KEY_4F ON PUBLIC.UNITE_COMPTE_SIX (UNITE_COMPTE_SIX_ID);

If I remove the foreign key name it works. For example :

@ManyToOne(fetch=FetchType.LAZY)
@ShallowReference
@JoinColumn(name="societe_gestion_six_id")
private SocieteGestionSIX societeGestion;

you get :

-- Drop table

-- DROP TABLE PUBLIC.UNITE_COMPTE_SIX;

CREATE TABLE PUBLIC.UNITE_COMPTE_SIX (
    AMF_DOCTRINE VARCHAR(2) NOT NULL,
    CATEGORY VARCHAR(5) NOT NULL,
    ESG_CATEG_GERMAN_MARKET VARCHAR(2) NOT NULL,
    ESG_FOCUS_TYPE VARCHAR(2) NOT NULL,
    ESG_LABELS VARCHAR,
    FREQUENCE_VALORISATION VARCHAR(4) NOT NULL,
    UNITE_COMPTE_SIX_ID BIGINT NOT NULL,
    IS_CHANGED BOOLEAN NOT NULL,
    ISIN VARCHAR NOT NULL,
    LABEL VARCHAR NOT NULL,
    LABEL_LONG VARCHAR,
    MIN_DURATION VARCHAR NOT NULL,
    NATURE_TITRE VARCHAR(4) NOT NULL,
    RATE_COMM_PERF DECIMAL(12,8) NOT NULL,
    RATE_EMISSION DECIMAL(9,5) NOT NULL,
    RATE_GESTION_YEAR DECIMAL(9,5) NOT NULL,
    RATE_RACHAT DECIMAL(9,5) NOT NULL,
    SFDR VARCHAR(2) NOT NULL,
    SRRI VARCHAR(4),
    OPTLOCK BIGINT NOT NULL,
    PLACE_COTATION_ID BIGINT,
    SOCIETE_GESTION_SIX_ID BIGINT,
    CONSTRAINT CONSTRAINT_4F PRIMARY KEY (UNITE_COMPTE_SIX_ID),
    CONSTRAINT FK_UNITE_COMPTE_SIX_PLACE_COTATION_ID FOREIGN KEY (PLACE_COTATION_ID) REFERENCES PUBLIC.PLACE_COTATIONS(PLACE_COTATION_ID) ON DELETE RESTRICT ON UPDATE RESTRICT,
    CONSTRAINT FK_UNITE_COMPTE_SIX_SOCIETE_GESTION_SIX_ID FOREIGN KEY (SOCIETE_GESTION_SIX_ID) REFERENCES PUBLIC.SOCIETE_GESTION_SIX(SOCIETE_GESTION_SIX_ID) ON DELETE RESTRICT ON UPDATE RESTRICT,
    CONSTRAINT FK_UNITE_COMPTE_SIX_UNITE_COMPTE_SIX_ID FOREIGN KEY (UNITE_COMPTE_SIX_ID) REFERENCES PUBLIC.UNITE_COMPTES(UNITE_COMPTE_ID) ON DELETE RESTRICT ON UPDATE RESTRICT
);
CREATE INDEX FK_UNITE_COMPTE_SIX_PLACE_COTATION_ID_INDEX_4 ON PUBLIC.UNITE_COMPTE_SIX (PLACE_COTATION_ID);
CREATE INDEX FK_UNITE_COMPTE_SIX_SOCIETE_GESTION_SIX_ID_INDEX_4 ON PUBLIC.UNITE_COMPTE_SIX (SOCIETE_GESTION_SIX_ID);
CREATE INDEX IDX_UNITECOMPTESIX_AMFDOCTRINE ON PUBLIC.UNITE_COMPTE_SIX (AMF_DOCTRINE);
CREATE INDEX IDX_UNITECOMPTESIX_CATEGORY ON PUBLIC.UNITE_COMPTE_SIX (CATEGORY);
CREATE INDEX IDX_UNITECOMPTESIX_ESG_CATEG_G ON PUBLIC.UNITE_COMPTE_SIX (ESG_CATEG_GERMAN_MARKET);
CREATE INDEX IDX_UNITECOMPTESIX_ESG_FOCUS_T ON PUBLIC.UNITE_COMPTE_SIX (ESG_FOCUS_TYPE);
CREATE INDEX IDX_UNITECOMPTESIX_FREQVALO ON PUBLIC.UNITE_COMPTE_SIX (FREQUENCE_VALORISATION);
CREATE INDEX IDX_UNITECOMPTESIX_ISCHANGED ON PUBLIC.UNITE_COMPTE_SIX (IS_CHANGED);
CREATE UNIQUE INDEX IDX_UNITECOMPTESIX_ISIN_INDEX_4 ON PUBLIC.UNITE_COMPTE_SIX (ISIN);
CREATE INDEX IDX_UNITECOMPTESIX_LABEL ON PUBLIC.UNITE_COMPTE_SIX (LABEL);
CREATE INDEX IDX_UNITECOMPTESIX_NATURETITRE ON PUBLIC.UNITE_COMPTE_SIX (NATURE_TITRE);
CREATE INDEX IDX_UNITECOMPTESIX_SFDR ON PUBLIC.UNITE_COMPTE_SIX (SFDR);
CREATE INDEX IDX_UNITECOMPTESIX_SRRI ON PUBLIC.UNITE_COMPTE_SIX (SRRI);
CREATE UNIQUE INDEX PRIMARY_KEY_4F ON PUBLIC.UNITE_COMPTE_SIX (UNITE_COMPTE_SIX_ID);


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source