Если я правильно понимаю, когда вы тянете объект, вы не хотите, чтобы достижения также извлекались из базы данных? Если это так, то вы должны использовать это:
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "candidate_id", nullable=false)
private List<Achievement> achievements= new ArrayList<Achievement>();
Ленивый тип извлечения не будет извлекать ваши отношения один ко многим, поэтому в этом случае достижения не будут извлечены из базы данных, если вы извлекаете объект это имеет достижения.
В вашем запросе должна быть проблема, из-за которой $ result является недопустимым ресурсом.
Попробуйте проверить mysql_error () после строки, в которой вы запускаете query.
Редактировать:
На самом деле, я бы изменил ваш запрос функции класса DBConnector на что-то вроде следующего, чтобы при возникновении неверного запроса выявлялась идентифицируемая ошибка:
function query($query) {
$this->theQuery = $query;
$queryId = mysql_query($query,$this->link);
if (! $queryId) {
throw new Exception(mysql_error().". Query was:\n\n".$query."\n\nError number: ".mysql_errno();
}
return $queryId;
}
// Load settings from parent class
$settings = SystemComponent::getSettings();
// Get the main settings from the array we just loaded
$host = $settings['dbhost'];
$db = $settings['dbname'];
$user = $settings['dbusername'];
$pass = $settings['dbpassword'];
//the settings
$host = 'localhost';
$db = 'xxx';
$user = 'xxx';
$pass = 'xxx';
Вы хотели переназначить переменные соединения? ИЛИ это несколько строк кода заглушки, которые вы забыли вынести? Или просто пример, чтобы показать, что содержит $ settings?
Пожалуйста, предоставьте ошибку от mysql_error (). Без этого я могу только догадываться ... попытаться экранировать имена ваших полей?
$result = $connector->query('SELECT `title`,`content` FROM `staff_vacancies` ORDER BY `ordering` LIMIT 0,100');