In MgrCompanyLink.pm (which has fields id, company and manager): WebApp::MgrCompanyLink->has_a(company => 'WebApp::Company'); WebApp::MgrCompanyLink->has_a(manager => 'WebApp::Manager'); In Manager.pm (which has fields id and person): WebApp::Manager->has_a(person => 'WebApp::Person'); WebApp::Manager->has_many('companies', [ 'WebApp::MgrCompanyLink' => 'companyid'], 'mgrid', { order_by => 'companyid' } );