Bonjour,

Voici mon cas d'utilisation :

Entité Inventaire :
  • id referenceVendeur
  • id idVendeur
  • field nom
  • field description
  • ...


Entité CommandeItem :
  • id idVendeur
  • id numeroCommande
  • id itemOrdre
  • field referenceVendeur
  • ...


J'aimerais déclarer une association ManyToOne depuis CommandeItem vers Inventaire, avec une jointure sur idVendeur+referenceVendeur

=> voici le mapping que j'ai fait :

Pour CommandeItem :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
   <entity name="Xxx\MyBundle\Entity\CommandeItem" table="commande_item">
      <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
      <id name="idVendeur" type="bigint" column="id_vendeur"/>
      <id name="referenceVendeur" type="string" column="reference_vendeur" length="60"/>
      <id name="numeroCommande" type="integer" column="numero_commande"/>
      <id name="itemOrdre" type="bigint" column="item_ordre"/>
      <many-to-one target-entity="Inventaire" field="inventaire">
         <join-columns>
            <join-column name="id_vendeur" referenced-column-name="id_vendeur"/>
            <join-column name="reference_vendeur" referenced-column-name="reference_vendeur"/>
         </join-columns>
      </many-to-one>-->
      <lifecycle-callbacks/>
   </entity>
</doctrine-mapping>

Pour Inventaire :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
   <entity name="Xxx\MyBundle\Entity\Inventaire" table="inventaire">
      <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
      <id name="idVendeur" type="bigint" column="id_vendeur"/>
      <id name="referenceVendeur" type="string" column="reference_vendeur" length="60"/>
      <field name="nom" type="string" column="nom" length="60"/>
      <field name="description" type="string" column="description" length="500"/>
      <lifecycle-callbacks/>
   </entity>
</doctrine-mapping>

Problème, quand je créé un objet CommandeItem, que je fais un setIdVendeur(x), le flush me sort une erreur :
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_vendeur' cannot be null
La propriété est bien settée non nulle, mais j'ai l'impression que le mapping de l'association sur plusieurs colonnes, dont celle-ci, remet l'id à NULL au moment de faire l'update en base..

Une idée ? J'essaie de faire quelque chose d'impossible ?