Rose::DB::Object::Std::Metadata - Standardized database object metadata.


  use Rose::DB::Object::Std::Metadata;

  $meta = Rose::DB::Object::Std::Metadata->new(class => 'Product');
  # ...or...
  # $meta = Rose::DB::Object::Std::Metadata->for_class('Product');


    id          => { type => 'int', primary_key => 1 },
    name        => { type => 'varchar', length => 255 },
    description => { type => 'text' },
    category_id => { type => 'int' },

    status => 
      type      => 'varchar', 
      check_in  => [ 'active', 'inactive' ],
      default   => 'inactive',

    start_date  => { type => 'datetime' },
    end_date    => { type => 'datetime' },

    date_created     => { type => 'timestamp', default => 'now' },  
    last_modified    => { type => 'timestamp', default => 'now' },


    category =>
      class       => 'Category',
      key_columns =>
        category_id => 'id',



Rose::DB::Object::Std::Metadata is a subclass of Rose::DB::Object::Metadata that is designed to serve the needs of Rose::DB::Object::Std objects. See the Rose::DB::Object::Std documentations for information on what differentiates it from Rose::DB::Object.

Only the methods that are overridden are documented here. See the Rose::DB::Object::Metadata documentation for the rest.


add_primary_key_column COLUMN

This method is an alias for the add_primary_key_columns() method.

add_primary_key_columns COLUMNS

Since Rose::DB::Object::Std objects must have a single primary key column named "id", calling this method with a COLUMNS argument of anything other than the column name "id" or a reference to an array containing the column name "id" will cause a fatal error.

In general, you do not need to use this method at all since the primary_key_columns() method is hard-coded to always return "id".

generate_primary_key_value DB

Given the Rose::DB-derived object DB, generate a new primary key column value for the table described by this metadata object. If a primary_key_generator is defined, it will be called (passed this metadata object and the DB) and its value returned.

If no primary_key_generator is defined, a new primary key value will be generated, if possible, using the native facilities of the current database. Note that this may not be possible for databases that auto-generate such values only after an insertion. In that case, undef will be returned.


This method is an alias for generate_primary_key_value().

initialize [ARGS]

This method does the same thing as the Rose::DB::Object::Metadata method of the same name, with one exception. If there is no column named "id" in the list of columns, a scalar primary key column named "id" is added to the column list. Then initialization proceeds as usual.


Always returns the column name "id" (in list context) or a reference to an array containing the column name "id" (in scalar context).


John C. Siracusa (


Copyright (c) 2005 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.