В чем разница между inversedBy и mappedBy?

Я разрабатываю свое приложение, используя Zend Framework 2 и Doctrine 2.

При написании аннотаций я не могу понять разницу междуmappedBy а такжеinversedBy.

Когда я должен использоватьmappedBy?

Когда я должен использоватьinversedBy?

Когда я не должен использовать ни один?

Вот пример:

 /**
 *
 * @ORM\OneToOne(targetEntity="\custMod\Entity\Person", mappedBy="customer")
 * @ORM\JoinColumn(name="personID", referencedColumnName="id")
 */
protected $person;

/**
 *
 * @ORM\OneToOne(targetEntity="\Auth\Entity\User")
 * @ORM\JoinColumn(name="userID", referencedColumnName="id")
 */
protected $user;

/**
 *
 * @ORM\ManyToOne (targetEntity="\custMod\Entity\Company", inversedBy="customer")
 * @ORM\JoinColumn (name="companyID", referencedColumnName="id")
 */
protected $company;

Я сделал быстрый поиск и нашел следующее, но я все еще в замешательстве:

example 1 example 2 example 3

Ответы на вопрос(4)

Ваш ответ на вопрос