Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 JPA在查询时复制了寄存器_Java_Hibernate_Jpa_Duplicates - Fatal编程技术网

Java JPA在查询时复制了寄存器

Java JPA在查询时复制了寄存器,java,hibernate,jpa,duplicates,Java,Hibernate,Jpa,Duplicates,MyEmpresa实体有两个这样映射的嵌套集合: @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST}) @JoinTable( name = "bandeiras_aceitas", joinColumns = {@JoinColumn(name = "empresa_id", nullable = false)}, inverseJoinColumns = {@

My
Empresa
实体有两个这样映射的嵌套集合:

@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST})
@JoinTable(
        name = "bandeiras_aceitas",
        joinColumns = {@JoinColumn(name = "empresa_id", nullable = false)},
        inverseJoinColumns = {@JoinColumn(name = "bandeira_id", nullable = false)})
private List<BandeiraCartao> bandeirasAceitas;

@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL}, 
        mappedBy = "empresa")
private List<HorarioAtendimento> horariosAtendimento;
@ManyToMany(fetch=FetchType.EAGER,cascade={CascadeType.PERSIST})
@可接合(
name=“bandeiras_aceitas”,
joinColumns={@JoinColumn(name=“empresa_id”,nullable=false)},
inverseJoinColumns={@JoinColumn(name=“bandeira\u id”,nullable=false)})
私人名单:班德拉塞塔斯;
@OneToMany(fetch=FetchType.EAGER,cascade={CascadeType.ALL},
mappedBy=“empresa”)
私人名单horariosAtendimento;

实际上,我在
horariosAtendimento
上有12条记录,在
bandeirasAceitas
中只有一条记录是我试图获取的
Empresa
的记录。但是,当我使用我的
find
方法时,'bandeirasAceitas'中有12条记录,问题是jpa(hibernate)生成的sql复制了这些记录,如(
horariosAtendimento
*bandeirasAceitas上的记录数)。如何解决此问题?

请仔细检查数据库内容。它不能像你描述的那样。对不起,我在问之前已经做过了:(您可能会看到生成的sql和联接表,因此结果集将包括多个具有相同内容的行,这些行用于empresa、banderiaCartao,但不同的Horarioatendicato,但这些结果行在装箱empresa时会折叠,因此您的列表中不能有重复的banderiaCartao。您实际上有12个不同的对象吗Bandeiraceartao在您的aceitas列表中?每个都有相同的id和内容?事实上这是不可能的。您是否覆盖了实体上的equal方法?@MarcosJ.CKichel hibernate不会这样做。可能只是Bandeiraceatas中有重复的条目,原因是您正在使用列表,因此无论何时添加新的Bandeiraceitas,都会进行预处理以前的数据也出现在同一个列表中,只更新同一个列表我明白你们说的,我可能在这里做了一些非常错误的事情,但我可以承认在bandeirasAceitas中只有一个条目,而且我有点习惯于冬眠,是什么让这更奇怪,反正我明天要切换到一个集合,这样我就可以测试了,我它不应该起作用。