I will rephrase:
Let's say presentation layer passed back a comment ID (as in a DTO or just plain integer), we can then get hold of a HUserComment along with all necessary meta data (target contents when the comment was made etc). 

```
// assuming the UI wants to know detail conversation after seeing the comment indicator 
HUserComment hComment = entityManager.get(HUserComment.class, commentId);
// pass back as DTO
commentDTO = new Comment(hComment.getContentsOfCommentedTarget(), hComment.getComment() ... )
```

Another version:
```
// in order to get meta data for a comment, you will need to fetch *latest* HTextFlowTarget object first, and the comment may not even be made against *this* version of target. 
// let's assume we somehow get hold of a target that is the parent of this comment
HUserComment hComment = entityManager.get(HUserComment.class, commentId);
List<String> contents = hTextFlowTarget.getContentForVersion(hComment.getVersion());
// pass back as DTO
commentDTO = new Comment(contents, hComment.getComment() ... )
```

So Yes we still need to have the HTextFlowTarget in session, but the code reads better in my opinion. Mind you this is NOT the final version. We may refactor this piece of logic into a DAO and use HQL (which may save us some database round trip)