Просмотр исходного кода

Merge branch 'fix/invoke' into 'wrdp'

增加isolation配置项

See merge request o2oa/o2oa!2064
o2null 5 лет назад
Родитель
Сommit
b49364ee31

+ 5 - 2
o2server/x_base_core_project/src/main/java/com/x/base/core/container/factory/PersistenceXmlHelper.java

@@ -172,7 +172,7 @@ public class PersistenceXmlHelper {
 					mapped_element.addText(o.getName());
 				}
 			}
-			if(dynamicFlag) {
+			if (dynamicFlag) {
 				for (String className : names) {
 					if (className.startsWith(DynamicEntity.CLASS_PACKAGE)) {
 						dyClasses.add(className);
@@ -192,7 +192,7 @@ public class PersistenceXmlHelper {
 						mapped_element.addText(dyClass);
 					}
 					for (Class<?> o : JpaObjectTools.scanMappedSuperclass(DynamicBaseEntity.class)) {
-						if(!o.getName().equals(DynamicBaseEntity.class.getName())) {
+						if (!o.getName().equals(DynamicBaseEntity.class.getName())) {
 							Element mapped_element = unit.addElement("class");
 							mapped_element.addText(o.getName());
 						}
@@ -296,6 +296,9 @@ public class PersistenceXmlHelper {
 		if (Config.externalDataSources().hasSchema()) {
 			properties.put("openjpa.jdbc.Schema", JpaObject.default_schema);
 		}
+		if (StringUtils.isNotEmpty(Config.externalDataSources().getTransactionIsolation())) {
+			properties.put("openjpa.jdbc.TransactionIsolation", Config.externalDataSources().getTransactionIsolation());
+		}
 		for (String name : Config.externalDataSources().findNamesOfContainerEntity(className)) {
 			properties.put("openjpa.ConnectionFactoryName", Config.RESOURCE_JDBC_PREFIX + name);
 			properties.put("openjpa.Log", Config.externalDataSources().log(name));

+ 10 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ExternalDataSource.java

@@ -30,6 +30,7 @@ public class ExternalDataSource extends ConfigObject {
 		this.statEnable = DEFAULT_STATENABLE;
 		this.statFilter = DEFAULT_STATFILTER;
 		this.slowSqlMillis = DEFAULT_SLOWSQLMILLIS;
+		this.transactionIsolation = DEFAULT_TRANSACTIONISOLATION;
 	}
 
 	public static ExternalDataSource defaultInstance() {
@@ -65,6 +66,8 @@ public class ExternalDataSource extends ConfigObject {
 	private List<String> excludes;
 	@FieldDescribe("默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完成的配置为DefaultLevel=WARN, Tool=TRACE, Enhance=TRACE, METADATA=TRACE, Runtime=TRACE, Query=TRACE, DataCache=TRACE, JDBC=TRACE, SQL=TRACE")
 	private String logLevel = DEFAULT_LOGLEVEL;
+	@FieldDescribe("事务隔离级别:default,none,read-committed,read-uncommitted,repeatable-read,serializable.默认使用default(数据库设置的事务级别).")
+	private String transactionIsolation;
 
 	public static final Integer DEFAULT_MAXTOTAL = 50;
 
@@ -78,6 +81,13 @@ public class ExternalDataSource extends ConfigObject {
 
 	public static final String DEFAULT_LOGLEVEL = "WARN";
 
+	public static final String DEFAULT_TRANSACTIONISOLATION = "default";
+
+	public String getTransactionIsolation() {
+		return StringUtils.isEmpty(this.transactionIsolation) ? DEFAULT_TRANSACTIONISOLATION
+				: this.transactionIsolation;
+	}
+
 	public String getLogLevel() {
 		return StringUtils.isEmpty(this.logLevel) ? DEFAULT_LOGLEVEL : this.logLevel;
 	}

+ 7 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ExternalDataSources.java

@@ -117,4 +117,11 @@ public class ExternalDataSources extends CopyOnWriteArrayList<ExternalDataSource
 		throw new Exception("hasSchema error.");
 	}
 
+	public String getTransactionIsolation() {
+		for (ExternalDataSource o : this) {
+			return o.getTransactionIsolation();
+		}
+		return null;
+	}
+
 }

+ 1 - 1
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/schedule/Clean.java

@@ -98,7 +98,7 @@ public class Clean extends AbstractJob {
 		Root<Message> root = cq.from(Message.class);
 		Date limit = DateUtils.addDays(new Date(), -Config.communicate().clean().getKeep());
 		Predicate p = cb.lessThan(root.get(Message_.createTime), limit);
-		return em.createQuery(cq.select(root).where(p)).setMaxResults(2000).getResultList();
+		return em.createQuery(cq.select(root).where(p)).setMaxResults(200).getResultList();
 	}
 
 }