If you create an attribute called _id in your entity it'll get matched to id.
See the documentation here:
Any reserved name is accessible by using _ before the name.
I have this problem in two places. See the domainmodel.
The first place is the request-url which has 'id' as parameter and the Java requestwidget should create that from QueryId-_id.
The second is the Response received that contains a field named 'docs-id'. For the second problem the '_' prefixing in DocObject-_id works. Thanks for that.
For the first problem it did not convert _id to id (at least not today), so I worked around that by creating the url in separate action and setting the optRequestData to empty.