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

पैकेज, संस्करण और लाइसेंस कैसे मॉडल करें?

आप समाधान खोजने के काफी करीब थे।

निम्नलिखित सेटअप काम करता है:

Npmपैकेज

@Entity
@Table(name = "npm_package")
public class NpmPackage {

  public NpmPackage(String name, String description) {
    this.name = name;
    this.description = description;
  }

  public NpmPackage() {
  }

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String name;

  private String description;

  @OneToMany(mappedBy = "npmPackage", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
  private List<NpmPackageVersion> versions = new ArrayList<>();

  ...//getters and setters

  public void addVersion(NpmPackageVersion version) {
    this.versions.add(version);
    version.setNpmPackage(this);
  }

  public void removeVersion(NpmPackageVersion version) {
    this.versions.remove(version);
  }
}

NpmPackageVersion

@Entity
@Table(name = "npm_package_version")
public class NpmPackageVersion {

    public NpmPackageVersion(String version, License license) {
        setVersion(version);
        this.license = license;
    }

    public NpmPackageVersion() {
    }

    @EmbeddedId
    private NpmPackageIdVersion npmPackageIdVersion = new NpmPackageIdVersion();

    @MapsId("npmPackageId")
    @ManyToOne
    private NpmPackage npmPackage;

    @ManyToOne
    private License license;

    public String getVersion() {
        return npmPackageIdVersion.version;
    }

    public void setVersion(String version) {
        npmPackageIdVersion.version = version;
    }

    ...//getters and setters

    @Embeddable
    public static class NpmPackageIdVersion implements Serializable {
        private static final long serialVersionUID = 3357194191099820556L;

        private Long npmPackageId;

        private String version;

        ... //getters and setters etc.
    }
}

लाइसेंस

@Entity
@Table(name = "license")
public class License {

    public License() {}

    public License(String name, String licenseId) {
        this.name = name;
        this.licenseId = licenseId;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String reference;

    @Column(name = "is_deprecated_license_id")
    private boolean deprecatedLicenseId;

    private Integer referenceNumber;

    private String name;

    private String licenseId;

    @Column(name = "is_osi_approved")
    private boolean osiApproved;

    ... //getters and setters
}

मैंने इसका परीक्षण करने के लिए निम्नलिखित कोड का उपयोग किया:

@Transactional
public NpmPackage createPackage() {
        License license = new License("General Public License", "GPL 2.0");
        em.persist(license);
        NpmPackage npmPackage = new NpmPackage("react", "React Framework");
        npmPackage.addVersion(new NpmPackageVersion("8.11.0", license));
        em.persist(npmPackage);
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब पोस्टग्रेज में LIMIT का उपयोग किया जाता है तो अनुक्रमणिका का उपयोग नहीं किया जाता है

  2. मणि पीजी का उपयोग कर मेरी रूबी स्क्रिप्ट से पोस्टग्रेस (पीजी) डेटाबेस से कनेक्ट नहीं हो सकता है (यह रेल नहीं है, केवल शुद्ध रूबी है)

  3. प्रति सप्ताह रिकॉर्ड्स की कुल संख्या

  4. डेटा के साथ डेटाबेस का उपयोग करके django में परीक्षण कैसे चलाएं?

  5. मैं PostgreSQL में पूर्णांकों की श्रेणी की खोज कैसे करूं?