Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-314

PK Generation Improvements

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 1.2 branch
    • None
    • Core Library
    • None

    Description

      [Supporting Arbitrary PK types at the Generator Level]

      We need to support at least "long" in addition to "int". I guess the good idea is to generalize this and only use "Object" in the API. Another idea is to change generator method signiture to take DbAttribute instead of DbEntity, as this will provide a way to determine the type of the key.

      [Bootstrapping PK Generator]

      void createAutoPk(DataNode node, List dbEntities);

      with

      void createAutoPk(
      DataNode node,
      List dbEntities,
      int defaultStartValue,
      boolean checkCurrentValues);

      But this will only work if DbGenerator uses DataNode instead of raw SQL connection. Another problem is that PkGenerator has a number of methods that simply return SQL code without running it. This is useful for showing the users what will be executed (and also allows users to store the script and run it later), however it limits the possibilities for encapsulation of PK logic. ...

      I guess we'll have to stick with providing a SQL solution that can be executed outside of Cayenne (e.g. PL/SQL for Oracle). Don't see a way around it. However sql-generation methods of PkGenerator (and eventually DbAdapter) can be deprecated. Instead we should implement PKGenerators via SQLTemplates. Then we can run such SQLTemplate in two modes - "normal" for actual generation and "mock" for text SQL script output. This may depend on CAY-304 feature.

      This should provide new capabilities and make DbAdapter/PKGenerator API simpler and much more consistent.

      Attachments

        Issue Links

          Activity

            People

              andrus Andrus Adamchik
              andrus Andrus Adamchik
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: