We really don't need to deserialize an entire list of Subscriptions, probably best to have the database count them for us.
Something like:
```java
    public boolean productHasSubscriptions(Product prod) {
        return ((Long) currentSession().createCriteria(Subscription.class)
            .createAlias("providedProducts", "providedProd", JoinType.LEFT_OUTER_JOIN)
            .createAlias("derivedProvidedProducts", "derivedProvidedProd", JoinType.LEFT_OUTER_JOIN)
            .add(Restrictions.or(
                Restrictions.eq("product", prod),
                Restrictions.eq("derivedProduct", prod),
                Restrictions.eq("providedProd.id", prod.getId()),
                Restrictions.eq("derivedProvidedProd.id", prod.getId())))
            .setProjection(Projections.count("id"))
            .uniqueResult()) > 0;
    }
```