Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 覆盖通过persistence.xml中的注释定义的映射_Java_Maven_Jpa_Orm_Eclipselink - Fatal编程技术网

Java 覆盖通过persistence.xml中的注释定义的映射

Java 覆盖通过persistence.xml中的注释定义的映射,java,maven,jpa,orm,eclipselink,Java,Maven,Jpa,Orm,Eclipselink,我也是JPA和EclipseLink的新手,有以下情况: 我有一个Maven模块,其中定义了我的实体类,它被称为Model。为了定义关系,实体类使用注释。因此,在模型中定义的persistence.xml中,没有与实体之间关系相关的信息。在某些实体中,我与EAGER FetchType有关系,但在某些情况下,这不是我想要的。例如,假设我有一个实体和一个使用模型的maven模块X,其中FetchType=EAGER。在X中,我想将实体与R一起使用,但是FetchType=LAZY。所以换句话说,我

我也是JPA和EclipseLink的新手,有以下情况:
我有一个Maven模块,其中定义了我的实体类,它被称为Model。为了定义关系,实体类使用注释。因此,在模型中定义的persistence.xml中,没有与实体之间关系相关的信息。在某些实体中,我与
EAGER FetchType
有关系,但在某些情况下,这不是我想要的。例如,假设我有一个实体和一个使用模型的maven模块X,其中
FetchType=EAGER
。在X中,我想将实体R一起使用,但是
FetchType=LAZY
。所以换句话说,我需要在X中覆盖
FetchType
Entity。我已经研究了可能的解决方案,并注意到有JPA注释负责覆盖类之间的映射。但是,它们都不允许覆盖FetchType

我不确定是否理解您的问题,为什么您不能使用@ManyToOne(fetch=FetchType.EAGER)之类的注释?因为在某些模块中,我需要延迟处理这些关系,因为我不需要获取它们。在这种情况下,我建议在默认情况下使用延迟加载fetch=FetchType.lazy,您可以向实体添加一个方法,在需要时加载它们。是的,我可以这样做,有些代码已经依赖于关系被定义为渴望的事实。我的意思是我有多个使用实体类的模块。在某些情况下,编写代码时假设关系定义为“渴望”,因此如果我将它们更改为“懒惰”,则可能会遇到LazyInitializationException的情况。EclipseLink不会抛出LazyInitializationException,除非您正在序列化实体,以便上下文不可用。只要它可用,它就会为您加载关系,这样您就不会有问题。另一方面,用eager注释,然后在以后尝试强制它使用lazy是不可能的,因为它需要预先更改实体以支持惰性关系-您已经在许多不同的问题中询问了这种行为。