На форму выводится информация о водителях:
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th>Id пользователя</th>
<th>Имя</th>
<th>Фамилия</th>
<th>Отчество</th>
<th>Дата рождения</th>
<th>Номер телефона</th>
<th>Организация</th>
<th>Серия-номер прав</th>
<th>Действия</th>
</tr>
</thead>
<tbody>
<tr class="Authors-item" th:each="driver : ${drivers}">
<td th:text="${driver.id}">Id</td>
<td th:text="${driver.username}">Username</td>
<td th:text="${driver.userInfo.firstName}">Name</td>
<td th:text="${driver.userInfo.middleName}">Second name</td>
<td th:text="${driver.userInfo.lastName}">Last name</td>
<td th:text="${driver.userInfo.birthDate}">Birthday</td>
<td th:text="${driver.userInfo.phoneNumber}">Number</td>
<td th:text="${driver.organization}? ${driver.organization.name} : 'Без организации'">Organization</td>
<td th:text="${driver.userInfo.licenseSeries + ' - ' + driver.userInfo?.licenseNumber}">Date</td>
<td>
<a th:href="@{/drivers/edit/{id}(id=${driver.id})}" href="#">Редактировать</a>
<a th:href="@{/drivers/delete/{id}(id=${driver.id})}" href="#">Удалить</a>
</td>
</tr>
</tbody>
</table>
Запрос обрабатывается следующим методом:
@GetMapping({"/index", "/", ""})
public String showMainPage(Model model) {
model.addAttribute("drivers", driverService.getDrivers());
return "/drivers/index";
}
Метод driverService:
public List<User> getDrivers() {
return userRepository.findUserByAuthoritiesIn(Collections.singleton(roleRepository.findByAuthority("DRIVER").get()));
}
Который возвращает записи, однако в поле userinfo по какой-то причине null. roleRepository.findByAuthority("DRIVER").get() возвращает нужные роли, поиск по ним в userRepository.findUserByAuthoritiesIn действительно ведется и данные выдаются, однако userinfo - null. Таблицы связаны 1 к 1.
User:
@Entity
@Table(name = "user")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User extends BaseEntity<Long> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 100, nullable = false, unique = true)
private String username;
@Email
@Column(length = 100, nullable = false, unique = true)
private String email;
@Column(length = 100, nullable = false)
private String password;
@Column(nullable = false)
private Boolean enabled;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY)
@JoinColumn(name = "organization_id")
private Organization organization;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn(name = "id")
private UserInfo userInfo;
@ManyToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinTable(
name = "user_role",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")}
)
private Set<Role> authorities = Collections.emptySet();
}
UserInfo:
@Entity
@Table(name = "user_info")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo extends BaseEntity<Long> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
@Column(length = 100)
private String firstName;
@Column(length = 100)
private String middleName;
@Column(length = 100)
private String lastName;
@Column(name = "birth_dt")
private Date birthDate;
@Column(length = 100)
private String phoneNumber;
@Column(length = 4)
private String licenseSeries;
@Column(length = 6)
private String licenseNumber;
}
Грешу на связи, но не могу найти ошибку, подскажите, в чем может быть дело?