Duvida MappedBy no doctrine com chave estrangeira composta

351 views
Skip to first unread message

Marco Túlio Nogueira Silva

unread,
Feb 28, 2014, 10:38:54 AM2/28/14
to PHP Rio, zfbr...@googlegroups.com
Boa tarde!
Estou com uma dúvida em como utilizar o mappedBy quando a tabela que possui a chave primaria possui chave composta. Este meu relacionamento é bidirecional, por isso preciso utilizar o mappedBy. Não posso utilizar herança neste caso também.

Abaixo segue o mapeamento das 3 classes onde estou com este problema:
Pessoa, PessoaFisica, PessoaJuridica


/**
 * @Table(name="Pessoa")
 * @Entity(readOnly=true)
 */
class Pessoa
{

  
  /**
   * @OneToOne(targetEntity="models\entity\PessoaFisica", mappedBy="iId")
   */
  private $oPessoaFisica;

  /**
   * @OneToOne(targetEntity="models\entity\PessoaJuridica", mappedBy="iId")
   */
  private $oPessoaJuridica;

  /**
   * @Id
   * @Column(name="PessoId", type="integer", nullable=false)
   * @GeneratedValue
   */
  private $iId;





/**
 * @Table(name="PessoaFisica")
 * @Entity(readOnly=true, repositoryClass="models\entity\repository\PessoaFisicaRepository")
 */
class PessoaFisica extends \fw\fwEntity
{

  /**
   * @Id
   * @OneToOne(targetEntity="models\entity\Pessoa")
   * @JoinColumns({
   * @JoinColumn(name="PeFisPessoa", referencedColumnName="PessoId")
   * })
   */
  private $iId;
  
  /**
   * @Id
   * @ManyToOne(targetEntity="models\entity\Papel", inversedBy="oPessoasFisicas")
   * @JoinColumn(name="PeFisPapel", referencedColumnName="PapelId")
   */
  private $oPapel;    

  /**
   * @Column(name="PeFisNome", type="string", nullable=true, length=50)
   */
  private $sNome;

  /**
   * @Column(name="PeFisBairro", type="string", nullable=true, length=50)
   */
  private $sBairro;




/**
 * @Table(name="PessoaJuridica")
 * @Entity(readOnly=true, repositoryClass="models\entity\repository\ProgramaRepository")
 */
class PessoaJuridica extends \fw\fwEntity
{

  /**
   * @Id
   * @OneToOne(targetEntity="models\entity\Pessoa")
   * @JoinColumns({
   * @JoinColumn(name="PeJurPessoa", referencedColumnName="PessoId")
   * })
   */
  private $iId;
  
  /**
   * @Id
   * @ManyToOne(targetEntity="sps\models\entity\Papel", inversedBy="oPessoasJuridicas")
   * @JoinColumn(name="PeJurPapel", referencedColumnName="PapelId")
   */
  private $oPapel;  

  /**
   * @Column(name="PeJurNome", type="string", nullable=false, length=100)
   */
  private $sNome;

  /**
   * @Column(name="PeJurCnpj", type="string", nullable=true, length=50)
   */
  private $sCNPJ;
--
=================================
           Marco Túlio Nogueira Silva
Msc- Ciência da Computação - UFMG/UFLA
=================================

Arthur Cláudio Almeida Pereira

unread,
Feb 28, 2014, 11:57:24 AM2/28/14
to phpri...@googlegroups.com, zfbr...@googlegroups.com
Fala Marco Túlio,

  Não tenho certeza, mas acredito que o mappedBy não interfira na tua chave composta

abraços


--
http://www.phprio.org/
---
Você está recebendo esta mensagem porque se inscreveu no grupo "PHP Rio" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para phprio-org+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Marco Túlio Nogueira Silva

unread,
Feb 28, 2014, 12:06:14 PM2/28/14
to zfbr...@googlegroups.com
Boa tarder Arthur. Obrigado por responder. Realmente a definição da chave composta para mim não é o problema, desde que seja de forma unidirecional. O problema é que preciso fazer o mapeamento bidirecional. 
Neste caso, não consigo informar mais de um campo no mappedby.


--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para zfbrasil+u...@googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages