J'ai une Assemblée parlementaire paritaire de données Spring EntitéSpel formaté Interrogation printemps données JPA w/Spring Security
@Entity
public class User {
private static final long serialVersionUID = 1L;
@Id
private Long id;
Ce que je veux inclure une propriété mutualFriends
qui est le résultat d'une requête contre l'utilisateur d'interrogation principle
(au printemps sécurité), en utilisant SpEL
et EvaluationContext extension model:
Suivant les exemples Spel je suis venu avec quelque chose comme ceci:
@Formula("select count(friendship) from Friendship friendship where " +
"friendship.owner.id = id " +
"and friendship.friend in " +
"(SELECT f.friend FROM Friendship f where f.owner.id = " +
"?#{principle != null ? principal.id : id}) ")
private Integer mutualFriends;
La même entité (User
) est utilisé quand j'ai besoin de l'utilisateur d'authentification afin d'avoir une certaine logique pour déterminer si le principle
est encore disponible ou je reçois une erreur:
Caused by: org.postgresql.util.PSQLException: No value specified for parameter 2.
?#{principle != null ? principal.id : id}
Est-ce formaté correctement?
Voici la partie pertinente de la requête en veille prolongée qui est exécutée lorsque je reçois l'exception:
select user0_.id as id1_19_, user0_.created_by as created_2_19_, user0_.created_date as created_3_19_, user0_.last_modified_by as last_mod4_19_, user0_.last_modified_date as last_mod5_19_, user0_.activated as activate6_19_, user0_.activation_key as activati7_19_, user0_.avatar_url as avatar_u8_19_, user0_.banner_url as banner_u9_19_, user0_.description as descrip10_19_, user0_.email as email11_19_, user0_.first_name as first_n12_19_, user0_.lang_key as lang_ke13_19_, user0_.last_name as last_na14_19_, user0_.login as login15_19_, user0_.online as online16_19_, user0_.password_hash as passwor17_19_, user0_.reset_date as reset_d18_19_, user0_.reset_key as reset_k19_19_, user0_.test_data as test_da20_19_,
select count (user0_.friendship) d'amitié amitié où friendship.friend dans ( SELECT f .friend FROM Amis f 0owner.id = COALESCE (? formula2_ de l'utilisateur user0_ où user0_.login =? Spel/JPA correctement implements remplace id
avec user0_.id
, mais quelque chose manque encore? En outre, il ne semble pas que la partie select count(user0_.friendship) from Friendship friendship where friendship.friend in (SELECT f.friend FROM Friendship f where f.owner.id = COALESCE(?#{principle != null ? principal.id : user0_.null},user0_.id)) and friendship.owner.id = user0_.id as formula2_
de la requête a été correctement analysée?
A fait un essai, même résultat –