Closed syr closed 2 years ago
/cc @Sanne, @gsmet, @yrodiere
You still need a default datasource, i.e. one without a or b.
You still need a default datasource, i.e. one without a or b.
I wonder why, though? IIRC, when it comes to JPA persistence units, the default one is automatically disabled (unless explicitly configured) as soon as there are named persistence units. Can't we do the same for datasources?
On a side note, this NPE is definitely not good user experience, and that at least should be fixed. I'll look into it.
Could someone else more familiar with the agroal/datasource part please look into why we always need a default datasource? And maybe document it, since it seems the user guide doesn't explicitly warn that you always need a default datasource.
Thanks for your feedback. As mentioned in the initial post, I already tried after making postgres the default datasource by removing 'a' but still get same stacktrace.
I adapted the application.properties, making postgres default AND also removed the quarkus.hibernate-orm.packages resulting in:
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/a
quarkus.datasource.username=docker
quarkus.datasource.password=docker
quarkus.datasource.b.db-kind=other
quarkus.datasource.b.jdbc.driver=oracle.jdbc.driver.OracleDriver
quarkus.datasource.b.jdbc.url=jdbc:oracle:thin:@****.net:1531:servicename
quarkus.datasource.b.username=docker
quarkus.datasource.b.password=docker
quarkus.hibernate-orm.b.dialect=org.hibernate.dialect.OracleDialect
Now quarkus starts up without the mentioned exception, however messes up access by querying tables from datasource b (oracle) using the default datasource (postgres).
So seems the problem is related to quarkus.hibernate-orm.packages.
FYI:
my.package.model.a: contains an @Entity class which extends PanacheEntityBase with @Table referring to a postgres table my.package.model.b: contains an @Entity class which extends PanacheEntityBase with @Table referring to a oracle table
however messes up access by querying tables from datasource b (oracle) using the default datasource (postgres).
That's because you didn't assign datasource b to persistence unit b:
quarkus.hibernate-orm.b.datasource=b
EDIT: also, dropping quarkus.hibernate-orm.packages
is not a good idea; it serves a purpose and not using it will change the content of your persistence units. Not sure what you're trying to do?
@yrodiere I only desparately try to get two datasources plugged to two distinct packages to work. I dont understand what magic is going on and fails with this config. I see no significant difference to the example config from documentation (https://quarkus.io/guides/hibernate-orm#multiple-persistence-units)
I adapted the config to:
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/a
quarkus.datasource.username=docker
quarkus.datasource.password=docker
quarkus.hibernate-orm.packages=my.package.model.a
quarkus.datasource.b.db-kind=other
quarkus.datasource.b.jdbc.driver=oracle.jdbc.driver.OracleDriver
quarkus.datasource.b.jdbc.url=jdbc:oracle:thin:@****.net:1531:servicename
quarkus.datasource.b.username=docker
quarkus.datasource.b.password=docker
quarkus.hibernate-orm.b.packages=my.package.model.b
quarkus.hibernate-orm.b.datasource=b
quarkus.hibernate-orm.b.dialect=org.hibernate.dialect.OracleDialect
and get the same stack trace.
What seems also weird, is
2022-02-09 19:45:40,270 WARN [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-25) Could not find a suitable persistence unit for model classes:
- io.quarkus.hibernate.orm.panache.PanacheEntity
What seems also weird, is
2022-02-09 19:45:40,270 WARN [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-25) Could not find a suitable persistence unit for model classes: - io.quarkus.hibernate.orm.panache.PanacheEntity
It does seem weird, but I'm not sure it's related. I imagine you have a dependency to panache in your POM, but you're not extending PanacheEntity
anywhere? That would explain it.
What seems also weird, is
2022-02-09 19:45:40,270 WARN [io.qua.hib.orm.dep.HibernateOrmProcessor] (build-25) Could not find a suitable persistence unit for model classes: - io.quarkus.hibernate.orm.panache.PanacheEntity
It does seem weird, but I'm not sure it's related. I imagine you have a dependency to panache in your POM, but you're not extending
PanacheEntity
anywhere? That would explain it.
OK then I would ignore it if this is normal. My entities extend PanacheEntityBase because I need custom IDs.
my.package.model.a: contains an entity class which extends PanacheEntityBase with table referring to a postgres table
my.package.model.b: contains an entity class which extends PanacheEntityBase with table referring to a oracle table
Ok, I had a closer look at the stack trace. This is not a configuration problem at all, this is a bug in Quarkus, and it's been solved in #23422, which has merged in Quarkus 2.7.1.Final.
I'll close this ticket as duplicate of #23422. If the problem still occurs with Quarkus 2.7.1.Final, please reopen.
Duplicate of #23422
Hello, I am just starting with quarkus and just cannot get it started with two defined datasources (postgres, oracle), configured like (Referring to https://quarkus.io/guides/datasource#other-databases)
In the stacktrace I have no clue whats wrong, assuming the warnings are not related. Considering
Unable to determine a database type for default datasource
I also tried to remove the name 'a' of the postgres datasource to make it the default datasource but it didn't help. Any ideas?