Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipselink不会检测到脏实体_Java_Jpa_Eclipselink - Fatal编程技术网

Java Eclipselink不会检测到脏实体

Java Eclipselink不会检测到脏实体,java,jpa,eclipselink,Java,Jpa,Eclipselink,我在试验日食。我正在尝试更新数据库中的现有实体。JPA实体只有公共字段,并且字段使用JPA注释进行注释。代码使用EntityManager.find()加载实体 代码创建JPA实体的实例,将值分配给实体的公共字段,并调用EntityManager.merge(实体)方法。Eclipselink不更新数据库记录。我启用了日志来查看Eclipselink是否发出SQL语句 Eclipselink不会发出任何update语句。这是否意味着即使使用字段持久性,也不能将值分配给实体的公共字段,而不是使用s

我在试验日食。我正在尝试更新数据库中的现有实体。JPA实体只有公共字段,并且字段使用JPA注释进行注释。代码使用
EntityManager.find()
加载实体

代码创建JPA实体的实例,将值分配给实体的公共字段,并调用EntityManager.merge(实体)方法。Eclipselink不更新数据库记录。我启用了日志来查看Eclipselink是否发出SQL语句

Eclipselink不会发出任何update语句。这是否意味着即使使用字段持久性,也不能将值分配给实体的公共字段,而不是使用setter方法

谢谢,
Chir

编织引入了一些优化,如lazy onetoone和Manytone以及更改跟踪。唯一可行的方法是对实体使用accessor方法,但如果这不是一个选项,则可以根据需要关闭它们。看见
有关更改跟踪的详细信息。

谢谢Chris,如果在JavaSE环境中使用JPA,它会检测对实体的公共或私有字段所做的更改,并更新数据库。但这在JavaEE环境中不起作用。编织与容器集成,而在javaSE中,它需要在启动时挂接代理。无编织意味着它必须使用延迟更改检测,这将创建用于比较的备份。而编织默认为属性更改跟踪,要求应用程序使用访问器才能注册更改。如果不能使用访问器,则需要指定不同的更改检测策略。请注意,JPA规范实际上只允许使用访问器从外部访问实体,因此一些其他特性,如延迟加载基本功能,也可能不起作用。