Oops!
I had so much logging that I couldn't see the logs for the trees 
Code:
[#appname#] 2005-12-27 17:31:19,516 DEBUG [Listener[Oc4jJMS.MessageConsumer.VVERNONLT.149b290:1086e45a15a:-8000.63]] RuleBasedTransactionAttribute.rollbackOn(119) | Applying rules to determine whether transaction should rollback on org.springframework.orm.ObjectRetrievalFailureException: Object of class [com.company.appname.model.Shift] with identifier [com.company.appname.model.ShiftPK@119bf16[date=Wed Dec 28 00:00:00 EST 2005,id=9898,num=1]]: not found
[#appname#] 2005-12-27 17:31:19,516 DEBUG [Listener[Oc4jJMS.MessageConsumer.VVERNONLT.149b290:1086e45a15a:-8000.63]] RuleBasedTransactionAttribute.rollbackOn(137) | Winning rollback rule is: null
[#appname#] 2005-12-27 17:31:19,516 DEBUG [Listener[Oc4jJMS.MessageConsumer.VVERNONLT.149b290:1086e45a15a:-8000.63]] RuleBasedTransactionAttribute.rollbackOn(143) | No relevant rollback rule found: applying superclass default
[#appname#] 2005-12-27 17:31:19,563 DEBUG [Listener[Oc4jJMS.MessageConsumer.VVERNONLT.149b290:1086e45a15a:-8000.63]] TransactionAspectSupport.doCloseTransactionAfterThrowing(272) | Invoking rollback for transaction on com.company.appname.service.FeatureManager.getShift due to throwable [org.springframework.orm.ObjectRetrievalFailureException: Object of class [com.company.appname.model.Shift] with identifier [com.company.appname.model.ShiftPK@119bf16[date=Wed Dec 28 00:00:00 EST 2005,id=9898,num=1]]: not found]
[#appname#] 2005-12-27 17:31:19,563 DEBUG [Listener[Oc4jJMS.MessageConsumer.VVERNONLT.149b290:1086e45a15a:-8000.63]] AbstractPlatformTransactionManager.rollback(502) | Setting existing transaction rollback-only
[#appname#] 2005-12-27 17:31:19,563 DEBUG [Listener[Oc4jJMS.MessageConsumer.VVERNONLT.149b290:1086e45a15a:-8000.63]] HibernateTransactionManager.doSetRollbackOnly(528) | Setting Hibernate transaction on session [org.hibernate.impl.SessionImpl@104d7f2] rollback-only
Answer is: I test for the existence of the object that I am about to insert in the database before I attempt to insert. I want to see a failure on that get, but unfortunately the failure marks my entire transaction as rollback-only. So mu subsequent insert fails. This makes sense. I will just have to catch a duplicate key constraint exception to see if it already exists on insert instead of testing for existence before insert.
Comment: This Spring stuff really works
and your forum history is very helpful. 
Thanks!
Vaughn