0
我正在使用Spring與Spring Data JPA,我遇到了深層複製複雜實體的問題。實體A
有10個一對多關係(爲簡潔起見,此處僅顯示一個關係),但我想深度複製此實體而不使用嵌套對象的標識字段B
。如何深入複製一個實體,不包括它的關係的ID?
我想避免使用反射,因爲性能損失。使用Orika我已經管理過排除A
的ID,但未能排除嵌套對象的ID。
@Entity
public class A {
@Id
@GeneratedValue
private Long id;
//...
@OneToMany()
@JoinColumn(name = "a_id")
private Set<B> items;
// getters and setters
}
@Entity
public class B {
@Id
@GeneratedValue
private Long id;
//...
public B() {}
// getters and setters
}
正如你可以看到我已經試圖通過註冊自定義MapperFactory
排除的B
的ID,但預期它不工作。只有A
的編號被排除,但收集items
的元素仍然有其編號。
A source = fetchFromDb();
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
mapperFactory.classMap(A.class, A.class)
.mapNulls(true)
.exclude("id")
.exclude("items['id']")
.byDefault()
.register();
MapperFacade mapperFacade = mapperFactory.getMapperFacade();
A dest = mapperFacade.map(source, A.class);
如何實現我的目標? 注意 - 我沒有鎖定到Orika,歡迎任何其他解決方案。
「我要避免使用引起的反射,性能損失」,你用spring,hibernate的...它的倒影。使用spring util或apache,如果你不想直接使用反射,你可以做到這一點 – xyz
如果你真的關心*性能反射*你不會使用Spring或Hibernate或Orika,它們100%做。 –