GVKun编程网logo

org.hibernate.PropertyAccessException: Null value

28

在本文中,我们将详细介绍org.hibernate.PropertyAccessException:Nullvalue的各个方面,同时,我们也将为您带来关于"net.sf.hibernate.Prop

在本文中,我们将详细介绍org.hibernate.PropertyAccessException: Null value的各个方面,同时,我们也将为您带来关于"net.sf.hibernate.PropertyValueException"、Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery、Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ...、Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionEx...的有用知识。

本文目录一览:

org.hibernate.PropertyAccessException: Null value

org.hibernate.PropertyAccessException: Null value

org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type sette

数据库里amount字段值为NULL,进行对象持久化关联时,企图给对象的这个属性赋值为空,而对象实例的这个属性不能为空值,所以出现错误。【amount是int型,不能为空】

 

 解决方法:将该字段在类中的类型定义为Integer。

Integer   code和int   code的区别:
Integer是对象        code   =   null;   对象可以为空.   
int   是普通类型        不可能   =   null.       
根据在数据库里,code是可以空的,故应该映射成Integer类型的。 而且hibernate中要用包装类java.long.Integer,不要用基本类型Integer.


"net.sf.hibernate.PropertyValueException"

如果你遇到了下面的错误信息,例如:

ERROR [Importing data task] [confluence.importexport.impl.ReverseDatabinder] endElement net.sf.hibernate.PropertyValueException: not-null property references a null or transient value: com.atlassian.user.impl.hibernate.DefaultHibernateUser.name

这个意思是在表中有一个不因为为 null 的地方的值为 null 了。在上面的例子中,这个在 USERS 表中的 name 列有记录为 null。有时候这个问题也会出现在 ATTACHMENTS 表中。

删除上面为 null 的记录,然后重新进行 xml 导出和导入。

 

https://www.cwiki.us/display/CONFLUENCEWIKI/Troubleshooting+XML+backups+that+fail+on+restore

Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery

Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery

如何解决Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery?

在 google play 控制台中,我看到许多只有最新设备和 Android 11 的用户都遇到了这种崩溃:

kotlin.UninitializedPropertyAccessException
de.xxx.blabla.MainActivity.getAdaptergallery

我什至没有任何称为 getAdaptergallery

的类/方法

大头痕迹是:

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4864)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4901)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)
Caused by: java.lang.RuntimeException: 
  at android.app.ActivityThread.deliverResults (ActivityThread.java:5506)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4851)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4901)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)
Caused by: kotlin.UninitializedPropertyAccessException: 
  at de.xxx.blabla.MainActivity.getAdaptergallery (MainActivity.java:7)
  at de.xxx.blabla.MainActivity.onActivityResult (MainActivity.java)
  at android.app.Activity.dispatchActivityResult (Activity.java:8541)
  at android.app.ActivityThread.deliverResults (ActivityThread.java:5499)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4851)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4901)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2307)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)


EDIT:

这就是我在 onActivityResult 中的内容:

public override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
    super.onActivityResult(requestCode,resultCode,intent)

    if(requestCode == 777 && resultCode == RESULT_OK && data != null) {

        if(data.hasExtra("commentCountChanged")) {
            val json = JSONObject(data.getStringExtra("commentCountChanged")!!)

            val memeID = json.getLong("memeID")
            val commentCount = json.getInt("commentCount")

            for (i in 0 until adapterMemes.memes.size) {
                if (adapterMemes.memes[i].id == memeID) {

                    adapterMemes.memes[i].commentcount = commentCount

                    val viewHolder = recyclerViewMemes.findViewHolderForAdapterPosition(i) as RecyclerView.ViewHolder

                    if (commentCount == 0) {
                        viewHolder.itemView.memeCommentsCount.text = "\u25CF"
                        viewHolder.itemView.memeCommentsCount.setTextSize(
                            TypedValue.COMPLEX_UNIT_SP,8f
                        )
                    } else {
                        viewHolder.itemView.memeCommentsCount.text =
                            commentCount.toString()
                        viewHolder.itemView.memeCommentsCount.setTextSize(
                            TypedValue.COMPLEX_UNIT_SP,16f
                        )
                    }

                    break
                }
            }
        }

        if(data.hasExtra("list")) {
            val updatedMemes = data.getParcelableArrayListExtra<Memes>("list") as ArrayList<Memes>

            val finalMemes: MutableList<Memes> = mutablelistof()
            for(i in 0 until updatedMemes.size){
                if(updatedMemes[i].title != "show_ad_break"){
                    finalMemes.add(updatedMemes[i])
                }
            }

            adaptergallery.memes = finalMemes
            adaptergallery.notifyDataSetChanged()
        }
    }
}

解决方法

我什至没有任何称为 getAdapterGallery 的类/方法

是的,你知道。您有一个名为 adapterGallery 的 Kotlin 属性,如您在代码中所见:

            adapterGallery.memes = finalMemes
            adapterGallery.notifyDataSetChanged()

就 JVM 实现而言,Kotlin 属性由一个 Java 字段以及一个 getter 和 setter 对组成。名为 adapterGallery 的属性的 getter 是 getAdapterGallery()

因此,根据错误消息,您已将 adapterGallery 定义为 lateinit var,并且当您到达 onActivityResult() 中引用 { {1}}。例如,在以下情况下可能会发生此错误:

  • 用户导航到任何向您返回结果的活动
  • 用户离开您的应用(例如,系统主页导航、切换到另一个任务、响应通知、响应来电)
  • 当您的应用在后台运行时,Android 会终止您的进程以释放系统 RAM,因为您的用户使用的是 RAM 有限的低端手机,但也有一堆繁忙的应用
  • 用户在离开您的应用后 30 分钟内返回到它,因此 Android 将用户返回到他们上次打开的活动,以尝试保留您的应用一直存在的错觉,尽管它进程已终止
  • 用户在该 Activity 中执行某些操作以返回到调用 adapterGallery 的那个,而该进程在此过程中并不存在,而 Android 在您有机会设置 UI 之前调用了 startActivityForResult()

在现代 Android 应用架构中,onActivityResult() 不会操作任何小部件或与这些小部件紧密耦合的对象(例如 onActivityResult())。相反,RecyclerView.Adapter 会更新一些状态持有者(例如,onActivityResult()),然后使用反应式 API(例如,ViewModel)发出一些新结果(例如,视图状态) )。然后,只要您的代码观察响应式 API 仅在您的小部件准备好使用数据后才这样做,您就可以避免这种崩溃。

另一种方法是首先尝试消除 LiveData。在现代 Android 应用程序开发中,我们尝试使用很少的 Activity,将屏幕实现为片段(或可组合)。您在 onActivityResult() 中的代码表明您正在响应您的其他活动的某些结果。也许您应该用一个 Activity 替换这两个 Activity,以其他方式更新屏幕(片段、组合、切换视图可见性等)。

许多关于 Android 应用开发的书籍和课程都介绍了这些更现代的技术。关注过去三年内撰写或更新的内容。

无论您是否更新您的应用以使用现代推荐的做法,您都需要确保不要尝试操作尚未初始化的 onActivityResult()

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ...

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ...

java.lang.IllegalStateException: Failed to load ApplicationContext

    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''entityManagerFactory'' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1778)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
    ... 24 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:179)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:119)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1837)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1774)
    ... 39 more
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ''hibernate.dialect'' not set
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    ... 56 more

第一次使用 springboot+jpa 进行操作数据库,刚启动就爆出来异常:

应该在 yml 配置文件中加上:

spring:
   jpa:
    show-sql: true
    hibernate:
      ddl-auto: create
    database-platform: org.hibernate.dialect.PostgreSQLDialect

 

Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionEx...

Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionEx...

Linuxmysql修改连接超时wait_timeout

 

1,首先:

show variables like ''%timeout%''

 

显示结果:

 

+-----------------------------+----------+

| Variable_name               | Value    |

+-----------------------------+----------+

| connect_timeout             | 10       |

| delayed_insert_timeout      | 300      |

| innodb_flush_log_at_timeout | 1        |

| innodb_lock_wait_timeout    | 50       |

| innodb_rollback_on_timeout  | OFF      |

| interactive_timeout         | 28800    |

| lock_wait_timeout           | 31536000 |

| net_read_timeout            | 30       |

| net_write_timeout           | 60       |

| rpl_stop_slave_timeout      | 31536000 |

| slave_net_timeout           | 3600     |

| wait_timeout                | 28800    |

+-----------------------------+----------+

12 rows in set (0.00 sec)

 

其中有用的是: interactive_timeout  wait_timeout  28800,默认为8小时设置;

 

一般线上的环境中mysql中连接时间设置为7天即可;

 

2,其次:

执行命令:       set  interactive_timeout=604800

 

                  set  wait_timeout=604800

 

最后:执行show variables like ''%timeout%'';看看执行成功没有,显示结果为:

 

+-----------------------------+----------+

| Variable_name               | Value    |

+-----------------------------+----------+

| connect_timeout             | 10       |

| delayed_insert_timeout      | 300      |

| innodb_flush_log_at_timeout | 1        |

| innodb_lock_wait_timeout    | 50       |

| innodb_rollback_on_timeout  | OFF      |

| interactive_timeout         | 604800   |

| lock_wait_timeout           | 31536000 |

| net_read_timeout            | 30       |

| net_write_timeout           | 60       |

| rpl_stop_slave_timeout      | 31536000 |

| slave_net_timeout           | 3600     |

| wait_timeout                | 604800   |

+-----------------------------+----------+

12 rows in set (0.00 sec)

 

表明执行成功了。。。

关于org.hibernate.PropertyAccessException: Null value的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于"net.sf.hibernate.PropertyValueException"、Android 崩溃 - kotlin.UninitializedPropertyAccessException MainActivity.getAdapterGallery、Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ...、Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionEx...等相关内容,可以在本站寻找。

本文标签: