[odb-users] Exception : "object not persistent" when trying to load object which does not exist in database

Florent GRATTA gratta at visuol.com
Thu Nov 12 10:27:08 EST 2015


Thank's a lot for your answer. I apologize because I have not pay 
attention on the details in "3.9 Loading Persistent Objects".

I have also the "Object not persistent" exception when I try to load an 
object that is in database but with a null value in relation column 
(null value is allowed in db, but odn thourght the exception)

Please see the code below

ODBCarIdenticationServiceImpl::listControlledCarsByStatus(unsigned char 
	typedef odb::query<ControlledCar> query;
	typedef odb::result<ControlledCar> result;

listControlledCars (new std::vector<std::shared_ptr<ControlledCar>>());
		transaction t (m_db->begin ());
		result r (m_db->query<ControlledCar> (query::status <= status && 
query::lockedByUser == ""));

		for (result::iterator i (r.begin ()); i != r.end (); ++i)
			std::shared_ptr<ControlledCar> p (i.load());
		t.commit ();
	catch (const odb::exception& e)
		m_logger->logError("listControlledCarsByStatus " + std::string(e.what 
		//return nullptr;
	return listControlledCars;

Le 12.11.2015 16:19, Boris Kolpackov a écrit :
> Hi Florent,
> Florent GRATTA <gratta at visuol.com> writes:
>> How can I can avoid avoing an exception?
>> std::shared_ptr<Mission> _mission (m_db->load<Mission> (scanexCarId));
> Use find() instead of load(). BTW, this is all discussed in the manual.
> Boris

More information about the odb-users mailing list