The second-level cache doesn't store instances of your entity. It stores the contents of the row corresponding to this entity. And even if it stored entity instances, returning the same instances to different transactions would completely break your application: different transactions running in parallel would modify the same, non-thread-safe object, and you wouldn't have any isolation anymore between transactions.
So every transaction will always have a distinct entity instance, even if the second-level cache is used.
To check that the second cache is hit, enable SQL logging, and check that the query to load the data is executed once, and not twice.