Skip to content

[BUG] - Validation error with the same table names in different schemas #1294

@kors2m

Description

@kors2m

Jimmer Version

0.9.117

JDK Version

21

Database

Postgres

OS

Linux

Expected behavior

Database validation success.

Actual behavior

Database validation fails.

Description

I get an error on validating the database.

Illegal entity manager, the table "DOCUMENT" is shared by both "net.mnk.jimmerissue.legal.entity.LegalDocument" and "net.mnk.jimmerissue.person.entity.PersonDocument"

Reproduction steps

I have entities in different modules, the tables of which are in different schemas with the same names.

Generated SQL

No response

Relation Model

create schema if not exists person;

create table person.document
(
    id   uuid not null primary key,
    type varchar(100)
);

create schema if not exists legal;

create table legal.document
(
    id   uuid not null primary key,
    type varchar(100)
);
@Entity
@Table(name = "document", schema = "legal")
public interface LegalDocument {

    @Id
    @GeneratedValue(generatorType = UUIDIdGenerator.class)
    @NotNull
    UUID id();

    @Nullable
    @Key
    String type();

}

@Entity
@Table(name = "document", schema = "person")
public interface PersonDocument {

    @Id
    @GeneratedValue(generatorType = UUIDIdGenerator.class)
    @NotNull
    UUID id();

    @Nullable
    @Key
    String type();

}


Screenshots

No response

Logs

java.lang.IllegalArgumentException: Illegal entity manager, the table "DOCUMENT" is shared by both "net.mnk.jimmerissue.legal.entity.LegalDocument" and "net.mnk.jimmerissue.person.entity.PersonDocument"
	at org.babyfish.jimmer.sql.runtime.EntityManager.tableSharedBy(EntityManager.java:442) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.runtime.EntityManager.access$300(EntityManager.java:32) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.runtime.EntityManager$Data.createRawTypeMap(EntityManager.java:711) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.runtime.EntityManager$Data.createTypeMap(EntityManager.java:627) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.meta.impl.MetaCache.get(MetaCache.java:66) ~[jimmer-core-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.runtime.EntityManager$Data.getTypeMap(EntityManager.java:622) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.runtime.EntityManager.validate(EntityManager.java:400) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.JSqlClientImpl$BuilderImpl.build(JSqlClientImpl.java:1875) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.di.JLazyInitializationSqlClient.sqlClient(JLazyInitializationSqlClient.java:34) ~[jimmer-sql-0.9.117.jar:na]
	at org.babyfish.jimmer.sql.di.AbstractJSqlClientDelegate.validateDatabase(AbstractJSqlClientDelegate.java:458) ~[jimmer-sql-0.9.117.jar:na]
	at net.mnk.jimmerissue.JimmerConfig.onStartup(JimmerConfig.java:24) ~[main/:na]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:382) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:254) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:173) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387) ~[spring-context-6.2.6.jar:6.2.6]
	at org.springframework.boot.context.event.EventPublishingRunListener.started(EventPublishingRunListener.java:103) ~[spring-boot-3.4.5.jar:3.4.5]
	at org.springframework.boot.SpringApplicationRunListeners.lambda$started$5(SpringApplicationRunListeners.java:76) ~[spring-boot-3.4.5.jar:3.4.5]
	at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
	at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.4.5.jar:3.4.5]
	at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.4.5.jar:3.4.5]
	at org.springframework.boot.SpringApplicationRunListeners.started(SpringApplicationRunListeners.java:76) ~[spring-boot-3.4.5.jar:3.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:324) ~[spring-boot-3.4.5.jar:3.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) ~[spring-boot-3.4.5.jar:3.4.5]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) ~[spring-boot-3.4.5.jar:3.4.5]
	at net.mnk.jimmerissue.JimmerIssueApplication.main(JimmerIssueApplication.java:23) ~[main/:na]

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions