You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring JPA Repository创建失败求助:无法解析jpaSharedEM_entityManagerFactory

问题求助:无法创建userRepository Bean

错误信息

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository' defined in com.sail.back.user.model.repository.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'

我遇到了这个问题,恳请大家帮忙解决!已排除gradle.build的问题,猜测可能是添加了继承User类的Customer和Consultant类后引发的继承问题。

User Repository代码

package com.sail.back.user.model.repository;

import com.sail.back.user.model.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
}

User实体类代码

@Entity
@Table(name="users")
@Getter
@Setter
@ToString
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class User implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id", precision = 10, scale = 2)
    private Long id;

    @Column(name="email", unique = true, nullable = false)
    private String email;

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

    @Column(name = "nickname")
    private String nickname;

    @Column(name="password")
    private String password;

    @Column(name = "create_at", nullable = false, updatable = false, insertable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private LocalDateTime createAt;

    @Enumerated(EnumType.STRING)
    private AuthProvider provider;

    @Enumerated(EnumType.STRING)
    private UserRole role;

    @Enumerated(EnumType.STRING)
    private UserStatus status;

    @Column(name="profile_img_url")
    private String profileImgUrl;

    @Enumerated(EnumType.STRING)
    private UserGender gender;

    @Column(name = "birthdate_year")
    private String birthdateYear;

    @Column(name = "birthdate_month")
    private String birthdateMonth;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return Collections.singleton(() -> role.name());
    }

    @Override
    public String getUsername() {
        return email;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    //封禁用户
    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    //密码
    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        if(status == UserStatus.INACTIVE){
            return false;
        }
        return true;
    }

    public static User of(OAuth2User oAuth2User){
        Map<String, Object> map = oAuth2User.getAttributes();
        User user = new User();
        String email =(String) map.get("email");
        String name =(String) map.get("name");
        String nickName =(String) map.get("nickName");
        String birthDateMonth =(String) map.get("birthDateMonth");
        String birthDateYear =(String) map.get("birthDateYear");
        String gender = (String) map.get("gender");
        String picture =(String) map.get("picture");
        AuthProvider provider = (AuthProvider) map.get("provider");

        if (email!=null) user.setEmail(email);
        if (name!=null) user.setName(name);
        if (nickName!=null) user.setNickname(nickName);
        if (birthDateMonth!=null) user.setBirthdateMonth(birthDateMonth);
        if (birthDateYear!=null) user.setBirthdateYear(birthDateYear);
        if (gender!=null) user.setGender(ToMap(gender));
        if (picture!=null) user.setProfileImgUrl(picture);
        if (provider!=null) user.setProvider(provider);
        user.setStatus(UserStatus.ACTIVE);
        user.setRole(UserRole.USER);
        return user;
    }

    static UserGender ToMap(String gender){
        if (gender.equals("male")||gender.equals("MALE")||gender.equals("M")){
            return UserGender.MALE;
        }
        return UserGender.FEMALE;
    }
}

Consultant类代码

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@Table(name = "consultants")
public class Consultant {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    private int cost;
    private int reviewCount;

    @OneToMany(mappedBy = "consultant", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    private List<Consulting> consultings = new ArrayList<>();

}

Customer类代码

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@Table(name = "customers")
@AllArgsConstructor
public class Customer extends BaseTimeEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    @OneToMany(mappedBy = "customer")
    private List<Consulting> consultings = new ArrayList<>();

    @OneToMany(mappedBy = "customer" )
    private List<Consulting> reservations = new ArrayList<>();


//    @OneToMany(mappedBy = "customer", cascade =CascadeType.ALL)
//    private List<CustomerCommunity> participant=new ArrayList<>();

    @OneToMany(mappedBy = "customer")
    private List<Community> host=new ArrayList<>();


}

内容的提问来源于stack exchange,提问作者junwon9824

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:14:56