Имею таблицу user & user_dealer, имеющую отношение один ко многим.Пожалуйста, найдите нижеприведенную структуру таблицы.
Таблица пользователей
id email username
679 test@test.com sathis
679 test@test.com sathis
679 test@test.com sathis
679 test@test.com sathis
679 test@test.com sathis
679 test@test.com sathis
679 test@test.com sathis
679 test@test.com sathis
680 test@test.com ram
680 test@test.com ram
680 test@test.com ram
681 test@test.com Steve
681 test@test.com Steve
681 test@test.com Steve
681 test@test.com Steve
681 test@test.com Steve
таблица user_dealer
user_id dealer_id
679 J039
679 J080
679 J320
679 J54L
679 K31P
679 L05C
679 T030
679 V150
680 J039
680 J080
680 J320
681 ABC12
681 CD123
681 opo123
681 qw123
681 ieu12
если я дам имя пользователя (из таблицы пользователя), то оно должно проверитькод (из таблицы user_dealer) и тот же дилер должен проверить, представлен ли он для какого-то другого user_id (из таблицы user_dealer), и должен также возвращать эти user_ids.
, например.
id username
679 sathis
680 ram
из таблицы выше, если я даю сати в качестве входных данных.я должен получить оперативную память в качестве выходных результатов.Потому что Sathis's dealer_id также представлен для Ram.
Пожалуйста, найдите класс модели для пользователя
@Getter
@Setter
@Entity
@Table(name = "users")
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode(of = {"username"})
@ValidDsdPermissions
@ValidApprovalPrivileges
public class User implements Identifiable<Long>, LazilyLoadable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("userLink")
private Long id;
@NotEmpty(message = "{error.model.user.attribute.username.required}")
@Column(unique = true, nullable = false)
private String username;
@NotEmpty(message = "{error.model.user.attribute.email.required}")
@Email(message = "{error.model.user.attribute.email.format.invalid}")
@Column(nullable = false)
private String email;
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "user_dealers", joinColumns = @JoinColumn(name = "user_id"))
@BatchSize(size=20)
@JsonSerialize(using = DealersSerializer.class)
@JsonDeserialize(using = DealersDeserializer.class)
private Set<Dealer> dealers = new HashSet<Dealer>();
}
Пожалуйста, найдите класс модели для дилера
@Getter
@Setter
@NoArgsConstructor
@Embeddable
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode
public class Dealer {
@Column(name = "dealer_id")
private String dealerId;
@Column(name = "dsd_id")
private Long dsdId;
}
Я пробовалс простым SQL-запросом и его рабочей находкой, как и ожидалось.Найдите приведенный ниже запрос.
select id, username
from security_development.users
inner join (
select distinct user_id
from security_development.user_dealers
inner join (
select dealer_id
from security_development.user_dealers
inner join security_development.users ON security_development.user_dealers.user_id = security_development.users.id
where username = 'sathis'
) t on t.dealer_id = security_development.user_dealers.dealer_id
) t2 on t2.user_id = security_development.users.id
Найдите приведенный ниже запрос спящего режима, не рассматривая / сравнивая dealer_id
(который следует сравнить)
"SELECT DISTINCT u FROM User u INNER JOIN u.dealers d, User v INNER JOIN v.dealers e WHERE v.username = :username AND u.role.id in (3,2) AND d.dealerId = e.dealerId"
Как я могу преобразоватьВыше простой SQL-запрос в Hibernate-запрос?