[odb-users] callback is not being called

Boris Kolpackov boris at codesynthesis.com
Fri Oct 5 05:13:07 EDT 2012

Hi Doug,

Doug Tomm <dctomm at gmail.com> writes:

> i have defined a class with a persist callback, but that callback 
> is not being called, for any event.  everything works -- when i 
> persist the object instance, it appears in the database.  but 
> except that the callback is never invoked.
>   void oninsert(::odb::callback_event event, ::odb::database& db)

You need to make it const:

    void oninsert(::odb::callback_event event, ::odb::database& db) const

Quoting the manual (Section 12.1.7, "callback"):

"The callback function for the *_persist, *_update, and *_erase events is
 always called on the constant object reference while for the *_load events —
 always on the unrestricted reference.

 If only the non-const version of the callback function is provided, then only
 the *_load events will be delivered. If only the const version is provided,
 then all the events will be delivered to this function. Finally, if both
 versions are provided, then the *_load events will be delivered to the
 non-const version while all others — to the const version."


More information about the odb-users mailing list