This breaks the strong recommendation that e1.compareTo(e2) == 0 when e1.equals(e2) == true.

>The natural ordering for a class C is said to be consistent with equals if and only if e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2) for every e1 and e2 of class C. Note that null is not an instance of any class, and e.compareTo(null) should throw a NullPointerException even though e.equals(null) returns false.
>
>It is strongly recommended (though not required) that natural orderings be consistent with equals."

This simple test fails:

```java
    @Test
    public void testCompareTo() {
        Entitlement e1 = TestUtil.createEntitlement();
        Entitlement e2 = TestUtil.createEntitlement(e1.getOwner(), e1.getConsumer(), e1.getPool(), null);
        e2.getCertificates().addAll(e1.getCertificates());
        
        System.out.println(e1.getPool().getId());
        assertTrue(e1.equals(e2));
        assertEquals(0, e1.compareTo(e2));
    }
```

I actually get a NullPointerException, because ```getId()``` of Pool is null (i.e. not in the DB yet). When the pool ids are the same, it works fine. It also still works.

```java
    @Test
    public void testCompareTo() {
        Entitlement e1 = TestUtil.createEntitlement();
        e1.getPool().setId("testid");
        Entitlement e2 = TestUtil.createEntitlement(e1.getOwner(), e1.getConsumer(), e1.getPool(), null);
        e2.getCertificates().addAll(e1.getCertificates());
        //e2.getPool().setId(e1.getPool().getId());
        e2.getPool().setId("foo");

        
        System.out.println(e1.getPool().getId());
        assertTrue(e1.equals(e2));
        assertEquals(0, e1.compareTo(e2));
    }
```