<?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">

    <mapped-superclass name="ZfrOAuth2\Server\Entity\AbstractToken">
        <id name="token" type="string" length="40" />
        <many-to-one field="client" target-entity="ZfrOAuth2\Server\Entity\Client" />
        <many-to-one field="owner" target-entity="ZfrOAuth2\Server\Entity\TokenOwnerInterface" fetch="EAGER" />
        <field name="expiresAt" column="expires_at" type="datetime" />
        <field name="scopes" type="json_array" />
    </mapped-superclass>
</doctrine-mapping>

<?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">

    <mapped-superclass name="ZfrOAuth2\Server\Entity\AbstractToken">
        <id name="token" type="string" length="40" />
        <many-to-one field="client" target-entity="ZfrOAuth2\Server\Entity\Client" />
        <many-to-one field="owner" target-entity="ZfrOAuth2\Server\Entity\TokenOwnerInterface" fetch="EAGER">
            <join-column on-delete="CASCADE" />
        </many-to-one>
        <field name="expiresAt" column="expires_at" type="datetime" />
        <field name="scopes" type="json_array" />
    </mapped-superclass>
</doctrine-mapping>

Add on-delete cascade in mapping
Add on-delete cascade in mapping
