NAME
Persistence::Relationship::ToOne - To one relationship
CLASS HIERARCHY
Persistence::Relationship
|
+----Persistence::Relationship::ToOne
SYNOPSIS
use Persistence::Relationship::ToOne ':all';
#entity defintion
my $entity_manager = Persistence::Entity::Manager->new(name => 'my_manager', connection_name => 'test');
my $emp_entity = Persistence::Entity->new(
name => 'emp',
alias => 'ep',
primary_key => ['empno'],
columns => [
sql_column(name => 'empno'),
sql_column(name => 'ename', unique => 1),
sql_column(name => 'job'),
sql_column(name => 'deptno'),
],
);
my $dept_entity = Persistence::Entity->new(
name => 'dept',
alias => 'dt',
primary_key => ['deptno'],
columns => [
sql_column(name => 'deptno'),
sql_column(name => 'dname'),
sql_column(name => 'loc')
],
);
$dept_entity->add_to_many_relationships(sql_relationship(target_entity => $emp_entity, join_columns => ['deptno'], order_by => 'deptno, empno'));
$entity_manager->add_entities($dept_entity, $emp_entity);
#object mapping
package Employee;
use Abstract::Meta::Class ':all';
use Persistence::Entity ':all';
use Persistence::ORM ':all';
entity 'emp';
column empno=> has('$.id');
column ename => has('$.name');
column job => has '$.job';
to_one 'dept' => (
attribute => has ('$.dept', associated_class => 'Department'),
cascade => ALL,
fetch_method => EAGER,
);
package Department;
use Abstract::Meta::Class ':all';
use Persistence::Entity ':all';
use Persistence::ORM ':all';
entity 'dept';
column deptno => has('$.id');
column dname => has('$.name');
column loc => has('$.location');
DESCRIPTION
Represents to one relationship. Supports eager, lazy fetch, cascading operation (inert/update/delete).
EXPORT
to_one method by ':all' tag.
METHODS
- to_one
-
Create a new instance of to one relation. Takes associated entity's id as parameters and list of named parameters for Persistence::Relationship::OneToMany constructor.
one_to_many 'wsus_user_service' => ( attribute => has('@.membership' => (associated_class => 'Membership')), fetch_method => EAGER, cascade => ALL, );
- deserialise_attribute
-
Deserialises relation attribute
- insert
-
Inserts relationship data.
- merge
-
Merges relationship data. #what if lazy
- delete
-
Merges relationship data.
SEE ALSO
Persistence::Relationship Persistence::Entity Persistence::Entity::Manager Persistence::ORM
COPYRIGHT AND LICENSE
The Persistence::Relationship::ToOne module is free software. You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
AUTHOR
Adrian Witas, <adrian@webapp.strefa.pl</gt>