Micronaut Data - Error - relation does not exist for postgresDB

148 Views Asked by At

I am trying to fetch the data from PostgresDB. Below is the configuration

Model Class

@MappedEntity(value = "user_tracking")
public class UserTracking {

    @Id
    private String id;
    private String brandId;
    private String status; 
    private String brandName; 
}

Repository

@JdbcRepository(dialect = Dialect.POSTGRES)
public interface UserTrackingRepository extends PageableRepository<UserTracking, String>{
    
    @Query(value = "SELECT ut FROM UserTracking ut",
            countQuery = "SELECT count(ut) FROM UserTracking ut")
    Page<UserTracking> findAllDBActivities(Pageable pageable);
    
}

DB Service

public @NonNull Page<UserTracking> getDBActivityByPagination(int page, int size) throws Exception{
        Pageable pageable = Pageable.from(page,size,Sort.of(Sort.Order.desc("createdOn")));
        //return utRepository.findAll(pageable);
        return utRepository.findAllDBActivities(pageable);
    }

If I run the method utRepository.findAllDBActivities(pageable) getting below exception

Execption : io.micronaut.data.exceptions.DataAccessException: SQL Error executing Query: ERROR: relation "usertracking" does not exist

But If I run the method utRepository.findAll(pageable) I am able to receive the data.

EDIT: As per denis, If I used sql query, i am getting different error. Repository Code:

@Query(value = "SELECT * FROM user_tracking",
            countQuery = "SELECT count(*) FROM user_tracking"
            )
    Page<UserTracking> findAllDBActivities(Pageable pageable);

Error:

13:27:55.973 [main] DEBUG io.micronaut.data.query - Executing Query: select * FROM user_tracking ORDER BY user_tracking_.created_on DESC LIMIT 10 
io.micronaut.data.exceptions.DataAccessException: SQL Error executing Query: ERROR: missing FROM-clause entry for table "user_tracking_"
  Position: 38
    at io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations.findStream(DefaultJdbcRepositoryOperations.java:567)
    at io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations.lambda$findAll$6(DefaultJdbcRepositoryOperations.java:593)
    at io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations.lambda$executeRead$18(DefaultJdbcRepositoryOperations.java:768)
    at io.micronaut.data.connection.support.AbstractConnectionOperations.executeWithNewConnection(AbstractConnectionOperations.java:143)

What is the issue with configuration? Please Help

1

There are 1 best solutions below

2
Denis On

You defined the table name as user_tracking. But your SQL query has UserTracking, make sure you understand that Micronaut Data JDBC queries are written using SQL, not JPQL.