簡體   English   中英

@query 上的 JpaRepository 數據庫連接錯誤顯示紅色的表

[英]JpaRepository database connection error on @query the table showing red

幫我大師...我一直有錯誤無法解析我的 JpaRepository 上的符號
查詢@Query(value="SELECT i FROM AkunIpaddressEnt i ORDER BY i.ID DESC")

“AkunIpaddressEnt”這個詞查詢我的查詢顯示紅色我確定一切都在正確的地方,我正在使用 intelij spring-boot JpaRepository

我的倉庫

@Repository
@Transactional("dbilapTransactionManager")
public interface AkunIpaddressRepo extends JpaRepository<AkunIpaddressEnt,Integer> {
    @Query(value="SELECT i FROM AkunIpaddressEnt i ORDER BY i.ID DESC")
    List<AkunIpaddressEnt> getlistIPaddress();
}

我的實體

@Data
@Entity
@Table(name="AKUN_IPADDRESS")
public class AkunIpaddressEnt {
@Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "AKUNIPADRESSSEQUENCE")
    @SequenceGenerator(sequenceName = "AKUNIPADRESSSEQUENCE", allocationSize = 1, name = "AKUNIPADRESSSEQUENCE")
    private int id;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}

我的配置

@Configuration
@PropertySource({"classpath:application.properties"})
@EnableJpaRepositories(
        basePackages = "com.repository.dbilap",
        entityManagerFactoryRef = "dbilapEntityManager",
        transactionManagerRef = "dbilapTransactionManager")
public class DbConDBILAP {
    @Autowired
    private Environment env;

    @Bean
    public DataSource DbilapDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("datasource2.driverClassName"));
        dataSource.setUrl(env.getProperty("datasource2.url"));
        dataSource.setUsername(env.getProperty("datasource2.username"));
        dataSource.setPassword(env.getProperty("datasource2.password"));

        return dataSource;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean dbilapEntityManager() {
        LocalContainerEntityManagerFactoryBean em
                = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(DbilapDataSource());
        em.setPackagesToScan(
                new String[] { "com.entity.dbilap" });

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        HashMap<String, Object> properties = new HashMap<>();
        properties.put("hibernate.dialect",
                env.getProperty("datasource2.hibernate.dialect"));
        properties.put("show.sql",
                env.getProperty("datasource2.hibernate.show.sql"));
        em.setJpaPropertyMap(properties);

        return em;
    }

    @Bean
    public PlatformTransactionManager dbilapTransactionManager() {
        JpaTransactionManager transactionManager
                = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(
                dbilapEntityManager().getObject());
        return transactionManager;
    }


}

我的屬性

datasource2.url=jdbc:oracle:thin:@0.0.0.0:1521:DBILAP
datasource2.username=MYUSERNAME
datasource2.password=MYPASSWORD
datasource2.driverClassName=oracle.jdbc.OracleDriver
datasource2.hibernate.dialect=org.hibernate.dialect.Oracle8iDialect
datasource2.hibernate.show.sql=true

怎么了?

Spring Data 中的查詢應該引用實體名稱和屬性名稱,而不是表名稱和列名稱。

所以,你的查詢應該是:

@Query(value="SELECT i FROM AkunIpaddressEnt i ORDER BY i.id DESC")

代替:

@Query(value="SELECT i FROM AKUN_IPADDRESS i ORDER BY i.ID DESC")

還要刪除實體的 (name="dbilapEntityManager"),因為您正在使用與實體本身無關的名稱覆蓋查詢中預期的實體名稱。

最后在@Table 中,您應該使用“name”屬性而不是“schema”屬性來定義表名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM