Browse Source

Merge pull request #140 in CORE/base-third from ~ZED/fine-base-third:10.0 to 10.0

* commit '88fad2be000f42d7d4bdada0edc93265a9009f83':
  fix
  MOBILE-17909&MOBILE-17908 10.0微信》定时调度有微信任务时卸载微信插件,报错
10.0
ju 6 years ago
parent
commit
e02c3535af
  1. 7
      fine-hibernate/src/com/fr/third/org/hibernate/tuple/PojoInstantiator.java
  2. 40
      fine-hibernate/src/com/fr/third/org/hibernate/tuple/entity/DefaultEntityRegister.java

7
fine-hibernate/src/com/fr/third/org/hibernate/tuple/PojoInstantiator.java

@ -17,6 +17,7 @@ import com.fr.third.org.hibernate.internal.CoreLogging;
import com.fr.third.org.hibernate.internal.CoreMessageLogger; import com.fr.third.org.hibernate.internal.CoreMessageLogger;
import com.fr.third.org.hibernate.internal.util.ReflectHelper; import com.fr.third.org.hibernate.internal.util.ReflectHelper;
import com.fr.third.org.hibernate.mapping.Component; import com.fr.third.org.hibernate.mapping.Component;
import com.fr.third.org.hibernate.tuple.entity.DefaultEntityRegister;
/** /**
* Defines a POJO-based instantiator for use from the tuplizers. * Defines a POJO-based instantiator for use from the tuplizers.
@ -72,7 +73,11 @@ public class PojoInstantiator implements Instantiator, Serializable {
public Object instantiate() { public Object instantiate() {
if ( isAbstract ) { if ( isAbstract ) {
throw new InstantiationException( "Cannot instantiate abstract class or interface: ", mappedClass ); try {
return DefaultEntityRegister.getInstance().getDefaultEntityClass(mappedClass).newInstance();
} catch (Exception e) {
throw new InstantiationException("class not found: ", mappedClass);
}
} }
else if ( optimizer != null ) { else if ( optimizer != null ) {
return optimizer.newInstance(); return optimizer.newInstance();

40
fine-hibernate/src/com/fr/third/org/hibernate/tuple/entity/DefaultEntityRegister.java

@ -0,0 +1,40 @@
package com.fr.third.org.hibernate.tuple.entity;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by Zed on 2018/11/1.
*/
public class DefaultEntityRegister {
private static volatile DefaultEntityRegister instance;
private static Map<Class, Class> MAP = new ConcurrentHashMap<Class, Class>();
public static DefaultEntityRegister getInstance() {
if (instance == null) {
synchronized (DefaultEntityRegister.class) {
if (instance == null) {
instance = new DefaultEntityRegister();
}
}
}
return instance;
}
private DefaultEntityRegister() {
}
public void registerDefaultClass(Class abstractEntityClass, Class defaultEntityClass) {
MAP.put(abstractEntityClass, defaultEntityClass);
}
public void removeDefaultClass(Class abstractEntityClass) {
MAP.remove(abstractEntityClass);
}
public Class getDefaultEntityClass(Class abstractEntityClass) {
return MAP.get(abstractEntityClass);
}
}
Loading…
Cancel
Save