OK, so you are saying your Reservation parameter in your Controller POST method is being populated.
You see your printlns show in the console.
Now what about setting a break point? can you do debugging? The thing we have to check is to see if you have a Transaction. If you can set a break point in the first line of your controller method. Then look at the Controller's Dao reference. If in the debugger it says it is being Proxied, then you have a Proxy.
Basically the code looks fine, although I didn't take a fined tooth comb to it.
The other thing
you should post is your configuration of your EntityManagerFactory, and also your TransactionManager configuration as well as your DataSource. Also you have <tx:annotation-driven/> in your config?
Mark