如何防止序列化相关User对象的所有数据

I have an entity CreditCard which is related to the User entity:

/**
 * CreditCard
 *
 * @ORM\Table(name="credit_card")
 * @ORM\Entity
 */
class CreditCard
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="value", type="string")
     */
    protected $value;

    /**
     * @var User
     *
     * @ORM\OneToOne(targetEntity="User", mappedBy="creditCard")
     */
    protected $user;

}

When I serialize CreditCard entity, it also serializes user field with user data like password, etc.

{{ creditCard|serialize }}

gives:

{"id":70,"value":"1721742","user":{"id":1,"username":"1721742","email":"hsz@domain.tld","enabled":true,"salt":"xxx","password":"yyy","last_login":"2013-05-27T09:18:30+0200","locked":false, ..... } }

How can I prevent it to allow serialize only id, username of User entity ?

Implement the serializable interface and unset the user interface in the serialize() method.

With this interface you write your own serialize() and unserialize() methods that will be called automatically, so you can implement anything you want