Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

spring data jpa: No aliases found in result tuple! Make sure your query defines aliases

When I try to get the users using repository interface I received following exception "org.springframework.dao.InvalidDataAccessApiUsageException: No aliases found in result tuple! Make sure your query defines aliases!; nested exception is java.lang.IllegalStateException: No aliases found in result tuple! Make sure your query defines aliases!"

Repository:

@Repository
public interface UserRelationshipRepository
        extends JpaRepository<UserRelationship, Long>, QueryDslPredicateExecutor<UserRelationship> {

    @Query(value = "SELECT ur.id.toUser FROM UserRelationship ur WHERE ur.fromUser = :fromUser AND ur.relationshipTypeId = 1")
    Set<User> findUserFriends(@Param("fromUser") User fromUser);
}

Entities:

@Entity
@NamedEntityGraph(name = "graph.User", attributeNodes = {})
@Table(name = "users")
public class User extends BaseEntity implements UserDetails {

    private static final long serialVersionUID = 8884184875433252086L;

    @Id
    @SequenceGenerator(name = "users_id_seq", sequenceName = "users_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "users_id_seq")
    private Long id;

    @Column(name = "first_name")
    private String firstName;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "fromUser", cascade = CascadeType.ALL)
    private Set<UserRelationship> relationships = new HashSet<UserRelationship>();
// getters setters
}

@Entity
@NamedEntityGraph(name = "graph.UserRelationship", attributeNodes = {})
@Table(name = "users_relationships")
public class UserRelationship extends BaseEntity implements Serializable {

    private static final long serialVersionUID = -6367981399229734837L;

    @EmbeddedId
    private final UserRelationshipId id = new UserRelationshipId();

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "from_user_id", nullable = false)
    @MapsId("fromUserId") // maps fromUserId attribute of the embedded id
    private User fromUser;

    @Column(name = "relationship_type_id")
    private Long relationshipTypeId;

}

I am using '1.11.0.BUILD-SNAPSHOT' version of spring data jpa. This is already known issue, and it is marked as resolved, but I am still get it.

Please, help me to solve this.

Update: If I change repository method's return type to Set<Object> then all works fine.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You're running into DATAJPA-885, which is already fixed and will be part of the Spring Data Hopper SR2 release.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...