@Override protected void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { try { Field persistenceUnitInfosField = DefaultPersistenceUnitManager.class.getDeclaredField("persistenceUnitInfos"); persistenceUnitInfosField.setAccessible(true); Map<String, MutablePersistenceUnitInfo> persistenceUnitInfos = (Map<String, MutablePersistenceUnitInfo>) persistenceUnitInfosField.get(this); if(persistenceUnitInfos.isEmpty()){ pui.setPersistenceUnitName(mergedPersistenceUnitName); pui.setTransactionType(transactionTypeOverride); }else{ MutablePersistenceUnitInfo currentlyMergedPui = persistenceUnitInfos.get(mergedPersistenceUnitName); for(String className:pui.getManagedClassNames()){ currentlyMergedPui.getManagedClassNames().add(className); } } } catch (Exception e) { throw new RuntimeException("Error while merging persistence units.",e); } super.postProcessPersistenceUnitInfo(pui); }
@Override protected void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) { try { Field persistenceUnitInfosField = DefaultPersistenceUnitManager.class.getDeclaredField("persistenceUnitInfos"); persistenceUnitInfosField.setAccessible(true); Map<String, MutablePersistenceUnitInfo> persistenceUnitInfos = (Map<String, MutablePersistenceUnitInfo>) persistenceUnitInfosField.get(this); if(persistenceUnitInfos.isEmpty()){ pui.setPersistenceUnitName(mergedPersistenceUnitName); pui.setTransactionType(transactionTypeOverride); }else{ MutablePersistenceUnitInfo currentlyMergedPui = persistenceUnitInfos.get(mergedPersistenceUnitName); for(String className:pui.getManagedClassNames()){ currentlyMergedPui.getManagedClassNames().add(className); } } } catch (Exception e) { throw new RuntimeException("Error while merging persistence units.",e); } super.postProcessPersistenceUnitInfo(pui); }
@Override public void preparePersistenceUnitInfos() { MutablePersistenceUnitInfo pui = new MutablePersistenceUnitInfo(); pui.setPersistenceUnitName(defaultPersistenceUnitName); pui.setExcludeUnlistedClasses(true); if (pui.getJtaDataSource() == null) { pui.setJtaDataSource(jtaDataSource); } if (pui.getNonJtaDataSource() == null) { pui.setNonJtaDataSource(dataSource); } // TODO register AssignableUUIDGenerator // AssignableUUIDGenerator.setServerConfigurationService(serverConfigurationService); // pui.getIdentifierGeneratorFactory().register("uuid2", AssignableUUIDGenerator.class); postProcessPersistenceUnitInfo(pui); Boolean autoddl = serverConfigurationService.getBoolean("auto.ddl", true); String hbm2ddl = serverConfigurationService.getString(AvailableSettings.HBM2DDL_AUTO, "update"); if (!autoddl) { // if sakai auto.ddl is turned off then set to validate hbm2ddl = "validate"; } pui.getProperties().setProperty(AvailableSettings.HBM2DDL_AUTO, hbm2ddl); defaultPersistenceUnitInfo = pui; }