Class JoinPersistableRelationStore

  • All Implemented Interfaces:
    org.datanucleus.store.types.scostore.PersistableRelationStore, org.datanucleus.store.types.scostore.Store

    public class JoinPersistableRelationStore
    extends Object
    implements org.datanucleus.store.types.scostore.PersistableRelationStore
    RDBMS implementation of a persistable relation backing store. Represents an N-1 unidirectional join table relation, and manages the access to the join table.
    • Field Detail

      • ownerMapping

        protected JavaTypeMapping ownerMapping
        Mapping to the owner of the relation (which holds the member).
      • ownerMemberMetaData

        protected org.datanucleus.metadata.AbstractMemberMetaData ownerMemberMetaData
        MetaData for the member in the owner.
      • joinTable

        protected PersistableJoinTable joinTable
        Table containing the link between owner and related object.
      • clr

        protected org.datanucleus.ClassLoaderResolver clr
        ClassLoader resolver.
      • addStmt

        protected String addStmt
        Statement for adding a relation to the join table.
      • updateStmt

        protected String updateStmt
        Statement for updating a relation to the join table.
      • removeStmt

        protected String removeStmt
        Statement for removing a relation from the join table.
    • Constructor Detail

      • JoinPersistableRelationStore

        public JoinPersistableRelationStore​(org.datanucleus.metadata.AbstractMemberMetaData mmd,
                                            PersistableJoinTable joinTable,
                                            org.datanucleus.ClassLoaderResolver clr)
        Constructor for a persistable relation join store for RDBMS.
        Parameters:
        mmd - owner member metadata
        joinTable - The join table
        clr - The ClassLoaderResolver
    • Method Detail

      • getStoreManager

        public org.datanucleus.store.StoreManager getStoreManager()
        Specified by:
        getStoreManager in interface org.datanucleus.store.types.scostore.Store
      • getOwnerMemberMetaData

        public org.datanucleus.metadata.AbstractMemberMetaData getOwnerMemberMetaData()
        Specified by:
        getOwnerMemberMetaData in interface org.datanucleus.store.types.scostore.Store
      • add

        public boolean add​(org.datanucleus.state.DNStateManager sm1,
                           org.datanucleus.state.DNStateManager sm2)
        Specified by:
        add in interface org.datanucleus.store.types.scostore.PersistableRelationStore
      • remove

        public boolean remove​(org.datanucleus.state.DNStateManager sm)
        Specified by:
        remove in interface org.datanucleus.store.types.scostore.PersistableRelationStore
      • update

        public boolean update​(org.datanucleus.state.DNStateManager sm1,
                              org.datanucleus.state.DNStateManager sm2)
        Specified by:
        update in interface org.datanucleus.store.types.scostore.PersistableRelationStore
      • getAddStmt

        protected String getAddStmt()
        Generates the statement for adding items.
         INSERT INTO JOINTABLE (OWNER_COL, RELATED_COL) VALUES (?,?)
         
        Returns:
        The Statement for adding an item
      • getUpdateStmt

        protected String getUpdateStmt()
        Generates the statement for updating items.
         UPDATE JOINTABLE SET RELATED_COL = ? WHERE OWNER_COL = ?
         
        Returns:
        The Statement for updating an item
      • getRemoveStmt

        protected String getRemoveStmt()
        Generates the statement for removing items.
         DELETE FROM JOINTABLE WHERE OWNER_COL = ?
         
        Returns:
        The Statement for removing an item
      • populateOwnerInStatement

        public static int populateOwnerInStatement​(org.datanucleus.state.DNStateManager sm,
                                                   org.datanucleus.ExecutionContext ec,
                                                   PreparedStatement ps,
                                                   int jdbcPosition,
                                                   PersistableJoinTable joinTable)
        Convenience method to populate the passed PreparedStatement with the value from the owner.
        Parameters:
        sm - StateManager
        ec - execution context
        ps - The PreparedStatement
        jdbcPosition - Position in JDBC statement to populate
        joinTable - Join table
        Returns:
        The next position in the JDBC statement