Я работаю над следующими таблицами базы данных:
users
таблица - Каждая строка представляет пользователя в системе. Он имеет ограничение внешнего ключа для таблицы стран. countries
таблица - каждая строка представляет страну, и каждая страна может иметь список dialects
, хранящийся в диалектах таблицы.
введите описание изображения здесь
Я использую данные Spring JPA и создал следующие классы сущностей
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "full_name")
private String fullName;
@Column(name = "createdAt")
private Date createdAt;
@Column(name = "country_code")
private Integer countryCode;
@Column(name = "dialect_key")
private String dialectKey;
}
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer country_code;
@Column(name = "name")
private String name;
@Column(name = "continent_name")
private String continentName;
@ElementCollection
@CollectionTable(name = "Dialect", joinColumns = { @JoinColumn(name = "country_code") })
private List<Dialect> dialectList;
}
@Embeddable
public class Dialect {
private String name;
}
Теперь у меня есть вариант использования, в котором мне нужно получить full name
и dialect name
для заданного пользователя.
Select u.full_name, d.name from users u
join countries c on u.country_code = c.country_code
join dialects d on c.country_code = d.country_code
where u.id = :user_id and u.dialect_key = d.dialect_key
Вопрос. Вышеупомянутый запрос отлично работает, когда выполняется как собственный запрос и возвращает список объектов. Далее я сопоставляю список объектов со списком POJO. Есть ли лучший способ сделать это, чтобы явно избежать преобразования Object -> POJO?