Spring data jpa java.lang.IllegalacessException-无法使用修饰符访问org.springframework.data.jpa.util.HibernateProxyDetector类的成员&引用;

Spring data jpa java.lang.IllegalacessException-无法使用修饰符访问org.springframework.data.jpa.util.HibernateProxyDetector类的成员&引用;,spring-data-jpa,Spring Data Jpa,基本Spring数据JPA应用程序(不是Spring引导应用程序)。是否有人知道导致此问题的原因: 错误: 存储库: @Repository public interface BlockedEmailRepository extends CrudRepository<BlockedEmail, Long> { List<BlockedEmail> findByUsernameAndEmailId(String username, String emailId);

基本Spring数据JPA应用程序(不是Spring引导应用程序)。是否有人知道导致此问题的原因: 错误:

存储库:

@Repository
public interface BlockedEmailRepository extends 
CrudRepository<BlockedEmail, Long> {

List<BlockedEmail> findByUsernameAndEmailId(String username, String 
emailId);

}

我遇到这个问题是因为以下冲突:

  • ApacheJames使用OpenJPA2.4.2作为其持久性提供程序
  • 但在我的代码中,我使用Hibernate作为持久性提供者
  • 我们试图使用Spring数据JPA,而James没有使用Spring数据
  • 因此,出现了冲突。为了解决这个问题,我们扩展了相同的OpenJPA配置/实现以应用于我们正在持久化的数据,并使用了相同的持久化单元,该单元由James使用,解决了我们的问题

    <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.1.1.RELEASE</version>
          <relativePath /> <!-- lookup parent from repository -->
    </parent>
    
    <dependency>
            <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
     @Bean
     LocalContainerEntityManagerFactoryBean entityManagerFactory() {
         LocalContainerEntityManagerFactoryBean lfb = new 
     LocalContainerEntityManagerFactoryBean();
         lfb.setDataSource(dataSource());
     lfb.setPersistenceProviderClass
     (org.hibernate.jpa.HibernatePersistenceProvider.class);
         lfb.setPackagesToScan("com.######.######.model");
         lfb.setJpaProperties(hibernateProps());
         return lfb;
     }
    
     Properties hibernateProps() {
         Properties properties = new Properties();
         properties.setProperty("hibernate.dialect",
     "org.hibernate.dialect.MySQL5InnoDBDialect");
         properties.setProperty("hibernate.show_sql","true");
         return properties;
     }
     @Bean
     JpaTransactionManager transactionManager() {
         JpaTransactionManager transactionManager = new JpaTransactionManager();
         transactionManager.setEntityManagerFactory(
     entityManagerFactory().getObject());
         return transactionManager;
     } 
     @Bean
     public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://mysql-james:3306/mailv2? 
     autoReconnect=true");
        dataSource.setUsername("######");
        dataSource.setPassword("########");
        return dataSource;
     }
    
    @Repository
    public interface BlockedEmailRepository extends 
    CrudRepository<BlockedEmail, Long> {
    
    List<BlockedEmail> findByUsernameAndEmailId(String username, String 
    emailId);
    
    }
    
    @Data
    @Entity
    @Table(name="BLOCKED_EMAIL")
    public class BlockedEmail {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "ID")
        private long id;
    
        @NotNull
        @Column(name = "EMAIL_ID")
        private String emailId;
    
        @NotNull
        @Column(name = "USER_NAME")
        private String username;
    }