use strict; use warnings; use DBIx::Connection; use Persistence::ValueGenerator::TableGenerator ':all'; use Persistence::Entity ':all'; use Persistence::Entity::Manager; my $entity_manager = Persistence::Entity::Manager->new(name => 'my_manager', connection_name => 'test'); table_generator 'empno_generator' => ( entity_manager_name => "my_manager", table => 'seq_generator', primary_key_column_name => 'pk_column', primary_key_column_value => 'empno', value_column => 'value_column', allocation_size => 5, ); $entity_manager->add_entities(Persistence::Entity->new( name => 'emp', unique_expression => 'empno', primary_key => ['empno'], columns => [ sql_column(name => 'ename'), sql_column(name => 'empno'), sql_column(name => 'deptno') ], value_generators => {empno => 'empno_generator'}, )); package Employee; use Abstract::Meta::Class ':all'; use Persistence::ORM ':all'; entity 'emp'; column empno=> has('$.id'); column ename => has('$.name'); column job => has '$.job'; my $connection = DBIx::Connection->new( name => 'test', dsn => $ENV{DB_TEST_CONNECTION}, username => $ENV{DB_TEST_USERNAME}, password => $ENV{DB_TEST_PASSWORD}, ); $entity_manager->begin_work; eval { my $emp = Employee->new(name => 'Scott'); $entity_manager->insert($emp); $entity_manager->commit; }; $entity_manager->rollback if $@;