Skip to content

Commit 2a58b82

Browse files
RookieRolljusda-cd-d-qinhaoMalloD12
authored
Fixes #86 Hibernate Annotations package scan not works package-info (#729)
Co-authored-by: jusda-cd-d-qinhao <[email protected]> Co-authored-by: Daniel Mallorga <[email protected]>
1 parent 4afa473 commit 2a58b82

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/main/java/liquibase/ext/hibernate/database/HibernateSpringPackageDatabase.java

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package liquibase.ext.hibernate.database;
22

33
import java.io.IOException;
4+
import java.util.ArrayList;
45
import java.util.HashMap;
56
import java.util.Map;
7+
import java.util.List;
68

9+
import org.hibernate.bytecode.enhance.spi.EnhancementContext;
710
import org.hibernate.cfg.AvailableSettings;
811
import org.hibernate.envers.configuration.EnversSettings;
912
import org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl;
13+
import org.hibernate.jpa.boot.internal.PersistenceUnitInfoDescriptor;
1014
import org.hibernate.jpa.boot.spi.Bootstrap;
1115
import org.springframework.core.io.ClassPathResource;
1216
import org.springframework.core.io.DefaultResourceLoader;
1317
import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager;
1418
import org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo;
1519
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
16-
20+
import org.springframework.core.NativeDetector;
1721
import jakarta.persistence.spi.PersistenceUnitInfo;
1822
import liquibase.Scope;
1923
import liquibase.database.DatabaseConnection;
@@ -101,12 +105,35 @@ protected EntityManagerFactoryBuilderImpl createEntityManagerFactoryBuilder() {
101105
map.put(EnversSettings.REVISION_FIELD_NAME,getHibernateConnection().getProperties().getProperty(EnversSettings.REVISION_FIELD_NAME,"REV"));
102106
map.put(EnversSettings.REVISION_TYPE_FIELD_NAME,getHibernateConnection().getProperties().getProperty(EnversSettings.REVISION_TYPE_FIELD_NAME,"REVTYPE"));
103107
map.put(AvailableSettings.USE_NATIONALIZED_CHARACTER_DATA, getProperty(AvailableSettings.USE_NATIONALIZED_CHARACTER_DATA));
104-
105-
EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder(persistenceUnitInfo, map);
108+
PersistenceUnitInfoDescriptor persistenceUnitInfoDescriptor = createPersistenceUnitInfoDescriptor(persistenceUnitInfo);
109+
EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder(persistenceUnitInfoDescriptor, map);
106110

107111
return builder;
108112
}
109113

114+
115+
public PersistenceUnitInfoDescriptor createPersistenceUnitInfoDescriptor(PersistenceUnitInfo info) {
116+
final List<String> mergedClassesAndPackages = new ArrayList<>(info.getManagedClassNames());
117+
if (info instanceof SmartPersistenceUnitInfo ) {
118+
mergedClassesAndPackages.addAll(((SmartPersistenceUnitInfo)info).getManagedPackages());
119+
}
120+
return
121+
new PersistenceUnitInfoDescriptor(info) {
122+
@Override
123+
public List<String> getManagedClassNames() {
124+
return mergedClassesAndPackages;
125+
}
126+
127+
@Override
128+
public void pushClassTransformer(EnhancementContext enhancementContext) {
129+
if (!NativeDetector.inNativeImage()) {
130+
super.pushClassTransformer(enhancementContext);
131+
}
132+
}
133+
};
134+
}
135+
136+
110137
@Override
111138
public String getShortName() {
112139
return "hibernateSpringPackage";

0 commit comments

Comments
 (0)