Вы можете использовать следующую функцию замены:
$val) {
if( preg_match($rx_http, $key) ) {
$arh_key = preg_replace($rx_http, '', $key);
$rx_matches = array();
// do some nasty string manipulations to restore the original letter case
// this should work in most cases
$rx_matches = explode('_', $arh_key);
if( count($rx_matches) > 0 and strlen($arh_key) > 2 ) {
foreach($rx_matches as $ak_key => $ak_val) $rx_matches[$ak_key] = ucfirst($ak_val);
$arh_key = implode('-', $rx_matches);
}
$arh[$arh_key] = $val;
}
}
return( $arh );
}
///
}
///
?>
Источник: Руководство по PHP
Вы должны включить cascade="all"
(при использовании xml) или cascade=CascadeType.ALL
(при использовании аннотаций) в отображение коллекции.
Это происходит потому, что у вас есть коллекция в вашей сущности, и эта коллекция имеет один или несколько элементов, которых нет в базе данных. Указывая вышеуказанные параметры, вы говорите hibernate сохранить их в базе данных при сохранении их родителя.