Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

माता-पिता जेपीए से सभी बच्चों और उप-बच्चों को प्राप्त करना

आप संबंध को द्वि-दिशात्मक बनाकर और पेड़ पर चलने के लिए एक पुनरावर्ती विधि लिखकर डोमेन मॉडल में इसे संभाल सकते हैं। इसका एक फायदा यह है कि यह बच्चों को किसी भी स्तर पर संभाल लेगा।

यह नीचे जैसा कुछ दिखाई देगा और फिर किसी भी उदाहरण के लिए आप यह कर सकते हैं:

SomeEntity e = //;
e.getChildren(); //only direct children
e.getAllChildren(); //all children

इकाई:

@Entity
@Table(name = "some_entity")
public final class SomeEntity {

    @Column(nullable = false, unique = true, length = 20)
    private String externalId;

    @Column(nullable = false, length = 50)
    private String name;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "parentId", nullable = true)
    private SomeEntity parent;

    @OneToMany(mappedBy = "parent")
    private List<SomeEntity> children; //or Set<>

    //returns direct children
    public List<SomeEntity> getChildren(){
        return children;
    } 

    //returns all children to any level
    public List<SomeEntity> getAllChildren(){
        getAllChildren(this);
    }

    //recursive function to walk the tree
    private List<SomeEntity> getAllChildren(SomeEntity parent){
        List<SomeEntity> allChidren = new ArrayList<>();

        for(SomeEntity child : children){
            allChildren.add(child);
            allChildren.addAll(getAllChildren(child);
        }

        return allChildren;
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संरक्षित संपत्ति से मूल्य प्राप्त करें

  2. लार्वा में IFNULL का प्रयोग करें

  3. MySQL में शीर्ष स्कोरर प्राप्त करें

  4. हाइबरनेट नक्शा जावा लंबे समय से MySQL BIGINT त्रुटि के लिए:

  5. MySQL में खाली डेटा कैसे छोड़ें?