The solution I found is I create a basic object with some initial data (Nothing or perhaps some info I already have available, not keyed to the ID of the object,) save it to the database, then the ID of my POJO is set to the ID of the inserted object in the database.
After this has happened, the data objects I need the key for, are added to this original basic object, then saved (saveOrUpdate(basicObject)) again to save the data object with the appropriate key.
Code:
Transaction trx = session.beginTransaction();
Object basic = new Object();
basic.setDate(System.currentTimeMillis());
session.save(basic);
Object nameObject = new Object();
nameObject.setId(basic.getId());
nameObject.setName("My Name Here");
session.saveOrUpdate(nameObject);
basic.setNameObject(nameObject);
session.saveOrUpdate(basic);
trx.commit();
This is just a basic example that may lead you on you way.