play! framework 问题 The JPA context is not initialized

在使用play! framework时

遇到 The JPA context is not initialized 这是由于 你是用了自己的线程,play框架  默认是每个request请求中 或者 继承了Job 的定时定点任务中,初始化了JPA EntityManager对象的,如果是你自己的线程这没有,需要你自己设置。如下图


class Runner extends Runnable {
     @Override
     public void run() {
         if (JPA.local.get() == null) {
             EntityManager em = JPA.newEntityManager();
             final JPA jpa = new JPA();
             jpa.entityManager = em;
             JPA.local.set(jpa);
         }

         JPA.em().getTransaction().begin();
         ... DO YOUR STUFF HERE ...
         JPA.em().getTransaction().commit();
     }
}






package com.example.q9722.biancheng; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.TextView; /** * Created by q9722 on 2018/1/1. */ public class test_text extends TextView { private String mText = "111",mNumber = "222"; private Paint mPaint; private Rect mNumberRect; public test_text(Context context, String mText, String mNumber) { this(context, null, mText, mNumber); } public test_text(Context context, AttributeSet attrs, String mText, String mNumber) { this(context, attrs, 0, mText, mNumber); } public test_text(Context context, AttributeSet attrs, int defStyleAttr, String mText, String mNumber) { super(context, attrs, defStyleAttr); this.mText = mText; this.mNumber = mNumber; init(); } private void init() { mPaint = new Paint(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.STROKE); canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint); canvas.drawCircle(getWidth()/6*4, getHeight()/4*3,getHeight()/4,mPaint); mPaint.setTextSize(18); mPaint.getTextBounds(mNumber, 0, mNumber.length(), mNumberRect); canvas.drawText(mText, 2 ,getHeight()/5,mPaint); canvas.drawText(mNumber, (getWidth()/6*4)-(mNumberRect.width()/2), (getHeight()/4*3)-(mNumberRect.hashCode()/2), mPaint); } } 01/01 18:58:49: Launching app $ adb push C:\Users\q9722\AndroidStudioProjects\BianCheng\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.example.q9722.biancheng $ adb shell pm install -r "/data/local/tmp/com.example.q9722.biancheng" Success $ adb shell am start -n "com.example.q9722.biancheng/com.example.q9722.biancheng.SplashActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Client not ready yet..Waiting for process to come online Connected to process 30129 on device xiaomi-mi_5-43ac216f W/System: ClassLoader referenced unknown path: /data/app/com.example.q9722.biancheng-1/lib/arm64 I/InstantRun: Instant Run Runtime started. Android package is com.example.q9722.biancheng, real application class is null. W/System: ClassLoader referenced unknown path: /data/app/com.example.q9722.biancheng-1/lib/arm64 W/MIUI-BLOCK-MONITOR: The msg { when=-72ms what=110 obj=AppBindData{appInfo=ApplicationInfo{7c1e14a com.example.q9722.biancheng}} target=android.app.ActivityThread$H planTime=1514804333143 dispatchTime=1514804333215 finishTime=0 } took 3826ms and took 3754ms after dispatch. W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable W/System: ClassLoader referenced unknown path: /system/app/MiuiContentCatcher/lib/arm64 D/AccessibilityManager: current package=com.example.q9722.biancheng, accessibility manager mIsFinalEnabled=false, mOptimizeEnabled=true, mIsUiAutomationEnabled=false, mIsInterestedPackage=false V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@717395 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@bc3ccaa V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@664d14e D/ActivityThreadInjector: clearCachedDrawables. I/Adreno: QUALCOMM build : 620c068, I09d312ff84 Build Date : 08/07/17 OpenGL ES Shader Compiler Version: XE031.09.00.04 Local Branch : Remote Branch : Remote Branch : Reconstruct Branch : I/Choreographer: Skipped 33 frames! The application may be doing too much work on its main thread. I/OpenGLRenderer: Initialized EGL, version 1.4 D/OpenGLRenderer: Swap behavior 1 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@c8e9e47 I/Timeline: Timeline: Activity_launch_request time:84494803 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@cd359d1 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@4011c36 D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.q9722.biancheng, PID: 30129 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.q9722.biancheng/com.example.q9722.biancheng.MainActivity}: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.example.q9722.biancheng.test_text at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6321) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770) Caused by: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.example.q9722.biancheng.test_text Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class com.example.q9722.biancheng.test_text Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] at java.lang.Class.getConstructor0(Class.java:2204) at java.lang.Class.getConstructor(Class.java:1683) at android.view.LayoutInflater.createView(LayoutInflater.java:622) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752) at android.view.LayoutInflater.rInflate(LayoutInflater.java:883) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846) at android.view.LayoutInflater.inflate(LayoutInflater.java:522) at android.view.LayoutInflater.inflate(LayoutInflater.java:430) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.example.q9722.biancheng.MainActivity.onCreate(MainActivity.java:17) at android.app.Activity.performCreate(Activity.java:6847) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6321) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770) Application terminated.
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页