原创

Spring Boot 3 data jpa へのアップグレード中に JPA クエリが機能しない

温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

現在、Spring Boot 2.7 と Java 11 を使用しています。Spring Boot 3.2.4 と Java 17 にアップグレードしようとしています。

@Entity
@Table(name = "user_token")
public class UserToken extends {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_token_id")
    private Long userTokenId;

    @OneToOne
    @JoinColumn(name = "user_id", referencedColumnName = "user_id", nullable = false)
    private User user;

    @Column(name = "user_token", length = 100, unique = true)
    @NotNull
    private String userToken;

}


@Repository
public interface UserTokenRepository extends JpaRepository<UserToken, Long> {
    @Query("Select ut.user From UserToken ut Where ut.userToken = :accessToken and ut.isActive = 1")
    User retrieveUserByToken(String accessToken);
}

次のエラーが発生します:

Exception encountered during context initialization - cancelling refresh attempt: 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with 
name 'userTokenRepository' defined in com.dao.repository.security.UserTokenRepository defined 
in @EnableJpaRepositories declared on SecurityServiceApplication: Could not create query for 
public abstract com.dao.domain.security.User 
com.dao.repository.security.UserTokenRepository.retrieveUserByToken(java.lang.String); 
Reason: Validation failed for query for method public abstract com.dao.domain.security.User 
com.dao.repository.security.UserTokenRepository.retrieveUserByToken(java.lang.String)

以下の @Query でも試してみましたが、同じエラーが発生しました。

@Query("Select u From UserToken ut INNER JOIN ut.user u Where ut.userToken = :accessToken and ut.isActive = 1")

ネイティブクエリを使用すると正常に機能しますが、JPAクエリはSpring boot 3.2.4では機能しません。同じコードが Spring Boot 2.7 でも機能しました。誰かがここでの続行方法について助けてくれますか?設定やコードの変更が必要ですか?

正文到此结束
热门推荐
本文目录