使用 @EntityScan 注释指定要扫描的实体类的位置。例如:
@EntityScan(basePackages = { "com.example.entity", "com.example.flow" })
加载 jar 文件并读取其中的类
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try (JarFile jarFile = new JarFile("/path/to/flow.jar")) {
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry jarEntry = entries.nextElement();
if (jarEntry.getName().endsWith(".class")) {
String className = jarEntry.getName().replace('/', '.').substring(0, jarEntry.getName().length() - 6);
Class.forName(className, true, classLoader);
}
}
}
重新启动 JPA。在 Spring 中,您可以使用 org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean 类的 afterPropertiesSet() 方法来重新启动 JPA。例如:
@Autowired
private LocalContainerEntityManagerFactoryBean entityManagerFactory;
// ...
entityManagerFactory.afterPropertiesSet();