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
相关产品推荐
相关产品推荐

