Can you probably create a small sample project with the entities + a small unit test? That way we can make sure to really talk about exactly the same scenario.
txs and LieGrue, strub > Am 23.03.2023 um 18:16 schrieb Marco DE BOOIJ <marco.maill...@debooy.eu>: > > I searched on the web but cannot filter out the solution. I get pointed to > Spring and Hibernate but I am only interested in the solution with OpenJPA. > I have a table in which I store the taxonomy tree. The key is the TAXON_ID > and it is linked with its parent through the PARENT_ID. I created the > following DTO named TaxonDto (I left out the fields that are of no > importance): > > @Column(name="PARENT_ID") > private Long parentId; > @Column(name="RANG", length=3, nullable=false) > private String rang; > @Id > @GeneratedValue(strategy=GenerationType.IDENTITY) > @Column(name="TAXON_ID", nullable=false, unique=true, updatable=false) > private Long taxonId; > > @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, > targetEntity=TaxonnaamDto.class, orphanRemoval=true) > @JoinColumn(name="TAXON_ID", nullable=false, updatable=false, > insertable=true) > @MapKey(name="taal") > private Map<String, TaxonnaamDto> taxonnamen = new HashMap<>(); > > @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY, > targetEntity=TaxonDto.class, orphanRemoval=true) > @JoinColumn(name="PARENT_ID", referencedColumnName="TAXON_ID", > updatable=false, insertable=false) > private TaxonDto parent; > > My problem lies in the @OneToOne. I did a test with FetchType.EAGER but then > the size of the returned data is 3x bigger as with LAZY since I get all > parents below the taxon. What I want is that the parent is fetched when the > rang is a specific value namely 'oso'. I can live with a solution where the > parent is not recursivly filled, the parent of the parent in this DTO must be > null. > > Is this possible and if so how can I do this? I have seen discriminators, > fetchgroup and subclass DTO but it leaves me clueless. >