My guess on what is happening is that hibernate is getting using the BillingDetails mapping file to persist your object to the database because of the method signature on your method.
public void update(BillingDetails billingDetails)
Try and make a new method that will accept a CreditCard and persist it.
If the same thing happens their might be an issue with your mapping files.
Have you written a
unit test to see if you're able to persist a credit card object by itself?
Also, I wouldn't store your business objects in your http session.
I think the following works better.
Request 1.
Get the credit card information from the database by id.
Store that credit card in your http request object.
Get the credit card from the http request in your jsp and display it.
Having a hidden field in your form with the credit card's id.
Request 2
Get the credit card information from the database by the hidden id value.
update that credit card with all the form data.
persist the credit card.
It might seem like a lot of extra work, but we've had a lot of success with this design.
Best of Luck.