Я определил эту связь в моем User
классе:Hibernate возвращение нуля для @OneToOne
@OneToOne (cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn (name = "id")
private Balance balance;
Hibernate создает необходимые таблицы с правильными отношениями.
Однако, когда я возвращаю User
объектов, используя следующий код, Balance
установлен null
.
User fetchedUser = userRepository.findOne(id);
Balance balance = fetchedUser.getBalance();
Почему это?
(я использую Spring Data для доступа к данным.)
Edit:
Этот код генерирует users
таблицу:
CREATE TABLE `users` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`contact_number` VARCHAR(255) NOT NULL,
`date_created` DATE NOT NULL,
`date_of_birth` DATE NOT NULL,
`device_id` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NULL DEFAULT NULL,
`gender` TINYINT(1) NOT NULL,
`location` VARCHAR(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`username` VARCHAR(255) NOT NULL,
`balance_id` BIGINT(20) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FK6A68E08CBE6702` (`balance_id`),
CONSTRAINT `FK6A68E08CBE6702` FOREIGN KEY (`balance_id`) REFERENCES `balances` (`id`)
)
И это порождает balances
CREATE TABLE `balances` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`total_claimed` INT(11) NOT NULL,
`total_won` INT(11) NOT NULL,
PRIMARY KEY (`id`)
)
Не могли бы вы предоставить более подробную информацию о вашей реализации? Особенно, как сопоставляется класс «Баланс» и как выглядит сгенерированная схема базы данных. – Blekit
Я обновлю код, полученный в результате использования предлагаемых вами изменений. –