--- /dev/null
+<?php
+
+namespace Doctrine\Tests\Models\Quote;
+
+use Doctrine\Common\Collections\ArrayCollection;
+
+/**
+ * @Entity
+ * @Table(name="`quote-user`")
+ */
+class User
+{
+ /**
+ * @Id
+ * @GeneratedValue
+ * @Column(type="integer", name="`user-id`")
+ */
+ public $id;
+
+ /**
+ * @Column(type="string", name="`user-name`")
+ */
+ public $name;
+
+ /**
+ * @OneToMany(targetEntity="Phone", mappedBy="user", cascade={"persist"})
+ */
+ public $phones;
+
+ /**
+ * @JoinColumn(name="`address-id`", referencedColumnName="`address-id`")
+ * @OneToOne(targetEntity="Address", mappedBy="user", cascade={"persist"}, fetch="EAGER")
+ */
+ public $address;
+
+ /**
+ * @ManyToMany(targetEntity="Group", inversedBy="users", cascade={"all"})
+ * @JoinTable(name="`quote-users-groups`",
+ * joinColumns={
+ * @JoinColumn(
+ * name="`user-id`",
+ * referencedColumnName="`user-id`"
+ * )
+ * },
+ * inverseJoinColumns={
+ * @JoinColumn(
+ * name="`group-id`",
+ * referencedColumnName="`group-id`"
+ * )
+ * }
+ * )
+ */
+ public $groups;
+
+ /**
+ * @ManyToMany(targetEntity="Group", inversedBy="users", cascade={"all"}, fetch="EXTRA_LAZY")
+ * @JoinTable(name="`quote-extra-lazy-users-groups`",
+ * joinColumns={
+ * @JoinColumn(
+ * name="`user-id`",
+ * referencedColumnName="`user-id`"
+ * )
+ * },
+ * inverseJoinColumns={
+ * @JoinColumn(
+ * name="`group-id`",
+ * referencedColumnName="`group-id`"
+ * )
+ * }
+ * )
+ */
+ public $extraLazyGroups;
+
+ public function __construct()
+ {
+ $this->phones = new ArrayCollection;
+ $this->groups = new ArrayCollection;
+ }
+
+
+ public function getPhones()
+ {
+ return $this->phones;
+ }
+
+ public function getAddress()
+ {
+ return $this->address;
+ }
+
+ public function getGroups()
+ {
+ return $this->groups;
+ }
+
+ public function setAddress(Address $address) {
+ if ($this->address !== $address) {
+ $this->address = $address;
+ $address->setUser($this);
+ }
+ }
+}