Closed syr closed 1 year ago
/cc @Sanne (hibernate-orm), @gsmet (hibernate-orm), @yrodiere (hibernate-orm)
Can you please share a reproducer?
From what I understand setting quarkus.hibernate-orm.mydatasource.active
to false
(and maybe something similar for the datasource) should be enough to achieve what you want, so either you made a mistake (and I need a reproducer to tell you where) or there's a bug (and I need a reproducer to find out where).
@yrodiere preparing a reproducer, hope to have it ready tomorrow
Hi @yrodiere Reproducer: https://github.com/syr/quarkus-resteasy-postgres/tree/common_module_with_entities
With the properties defined in https://github.com/syr/quarkus-resteasy-postgres/blob/common_module_with_entities/common/src/test/resources/application.properties, I get the error & stacktrace mentioned in original post
When I remove/comment all these properties, the test works just fine.
Seems a bit weird, as the properties suggest to turn basically all kinds of hibernate stuff off.
@syr There are two problems in your reproducer, and I'm afraid none of them are bugs.
First, the structure of your project might be invalid; is common
supposed to be a library that your application depends on? If so, quarkus-maven-plugin
should be added only to your application module, not to common
. This plugin is supposed to be executed on applications, not libraries.
Second, your properties are invalid as well:
quarkus.datasource.devservices.enabled=false
quarkus.devservices.enabled=false
quarkus.hibernate-orm.validate-in-dev-mode=false
quarkus.hibernate-orm.packages=none
quarkus.datasource.jdbc.url=none
quarkus.hibernate-orm.packages=none
tells Quarkus to look for entities in a package named none
. This package doesn't exist, so that's obviously not what you want. There is no such thing as a magic none
keyword to say "no package".quarkus.datasource.jdbc.url=none
tells Quarkus to use the URL none
to connect to your database. This URL is invalid, so that's obviously not what you want. There is no such thing as a magic none
keyword to say "no URL".quarkus.hibernate-orm.enabled=false
(or quarkus.hibernate-orm.active=false
) which would disable your persistence unit at build time (respectively, at runtime), so it's perfectly normal that Quarkus tries to start it.If you want to disable the Hibernate ORM extension at build time, try this instead (and don't forget to restructure your project to avoid using quarkus-maven-plugin
in libraries):
quarkus.hibernate-orm.enabled=false
In your case you'll be affected by #34005 though; remove the @Transactional
on your static entity methods to work around that; you can use QuarkusTransaction.joiningExisting().call( () -> { ... } )
as a workaround.
If you want to disable the Hibernate ORM extension at runtime (using environment variables or configuration separate from your build), try this instead:
quarkus.datasource.db-kind=postgresql
quarkus.hibernate-orm.active=false
You need to define the datasource just so it's there at build time, but it won't be started at runtime (since it's not used).
Does this solve your problem? If so, I will close this issue.
@yrodiere Thanks for checking and the helpful feedback.
considering your feedback, the test now succeeds (https://github.com/syr/quarkus-resteasy-postgres/commit/a2f159cb8b57f3893f1297a7f157fa7748624dbc)
Possibly also interesting for https://github.com/quarkusio/quarkus/issues/34005: If I comment just all application.properties (https://github.com/syr/quarkus-resteasy-postgres/commit/4520161a7e4a976c921f4f045e5652d16256ab4e) the test succeeds too
Description
Using 2.16.4.Final I have a common module with Panache enties, incl. finders etc.
Now I wanted to write a unit test which need quarkus magic which comes with
@QuarkusTest
but does not need hibernate-orm datasource, flyway, devservices. So I set properties (basically bombing with properties trying to disable hibernate-orm + datasource)..which got devservices and flyway obviously disabled.
But HibernateOrmProcessor still tries to spin up persistence unit. Where is the kill switch?
Implementation ideas
Would be nice to have a property (or I maybe just missed it) to disable all hibernate-orm, datasource stuff.
It would be even better to have very high level propery that disables everything related to hibernate-orm, datasource, flyway, devservices (for db), especially interesting to accellerate unit tests while keeping using
@QuarkusTest