Как определить EntityGraph для «JoinEntities»? - PullRequest
0 голосов
/ 09 ноября 2019

Я начал использовать EntityGraphs и задавался вопросом, как использовать их для случаев, когда отношения с Entity не являются прямыми, а сделаны через 'JoinEntity' (не знаю правильного английского слова для этого.).

В нормальном случае люди используют что-то вроде этого:

(идентификатор и стороны-владельцы исключаются из-за простоты кода)

@Entity
public class Post {    
    @OneToMany(mappedBy = "post")
    private List<Comment> comments = new ArrayList<>();    
}

@Entity
    public class Comment {   
        @OneToMany(mappedBy = "comment")
        private List<OtherEntity> others= new ArrayList<>();         
}

@NamedEntityGraph(
  name = "post-entity-graph",
  attributeNodes = {
    @NamedAttributeNode(value = "comments", subgraph = "comments-subgraph"),
  },
subgraphs = {
    @NamedSubgraph(
      name = "comments-subgraph",
      attributeNodes = {
        @NamedAttributeNode("others")
      }
    )
  }
)

Но как обрабатывать что-то вроде этого: (Post Entityто же самое)

@Entity
public class Comment {

    @OneToMany(mappedBy = "comment")
    private List<OtherEntityJoiner> others= new ArrayList<>();

}

@Entity
public class OtherEntityJoiner{

    @ManyToOne
    @JoinColumn(name = "other_entity_id", nullable = false)
    @NotNull
    private OtherEntity other;

    @ManyToOne
    @JoinColumn(name = "comment_id", nullable = false)
    @NotNull
    private Comment comment;

   //fields for additional informations about the relation

}

С определенным выше графом сущностей будут выбираться и другие. Но как нам изменить наш график, если мы хотим получить другую коллекцию в OtherEntity. Как нам «пройти» этот OtherEntityJoiner с подграфом?

...