# How do execute a native query for an Entity that has a property populated via @SecondaryTable

**URL:** <https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016>\
**Category:** Hibernate ORM\
**Created:** [February 13, 2024, 12:23am UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016 "2024-02-13T00:23:27Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jeff\_Maxwell](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jeff_maxwell/32/1789_2.png) [@Jeff\_Maxwell](https://discourse.hibernate.org/u/Jeff_Maxwell)\
**Post date:** [February 13, 2024, 12:23am UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/1 "2024-02-13T00:23:27Z")

</div>

I have an entity that uses a secondary table to populate a calculated value from a view we cannot figure out how to set up the query to allow us to return the entire entity in the initial query.

Here is a simplified example to illustrate what we are encountering.

```java
@Entity
@Table(name = "test_entity")
@SecondaryTable(name = "test_entity_bar_vw")
public class TestEntity {

    @Id
    @Column(name = "test_entity_id", nullable = false, unique = true)
    @EqualsAndHashCode.Include
    UUID testEntityId;

    @Column(name = "bar", table = "test_entity_bar_vw", insertable = false, nullable = false, updatable = false)
    String bar;

    @NaturalId(mutable = false)
    @Column(length = 50, nullable = false, unique = true)
    String businessKey;

    @Column(length = 50, nullable = false, unique = false)
    String data;

```

This test fails:

```java
 static final String QUERY = """
            SELECT
             {test_entity.*}
            FROM
             test_entity test_entity
            """;

    @Test
    void test() {

        this.em.createNativeQuery(QUERY, TestEntity.class, "test_entity")
                .getResultList();
    }

```

Here is the exception:

```auto
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [
SELECT
 test_entity.test_entity_id test_ent1_0_0_,
 test_entity.business_key business2_0_0_,
 test_entity.data data3_0_0_
FROM
 test_entity test_entity
] [ERROR: column test_entity.bar does not exist
  Position: 307] [n/a]
	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:265)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
	at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getMetaData(AbstractResultSetAccess.java:36)
	at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getColumnCount(AbstractResultSetAccess.java:52)
	at org.hibernate.query.results.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:193)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:325)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:115)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:138)
	at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:656)
	at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
	at org.hibernate.query.Query.getResultList(Query.java:120)
	at com. ****.spring.data.jpa.repository.TestEntityIT.test(TestEntityIT.java:54)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: org.postgresql.util.PSQLException: ERROR: column test_entity.bar does not exist
  Position: 307
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2712)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2400)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:367)
	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
	at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:134)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
	... 17 more

```

I attempted to replace the table with a view that had the missing field and it too failed but this time with a different error:

```java
 static final String QUERY = """
            SELECT
             {test_entity.*}
            FROM
             test_entity_vw test_entity
            """;

    @Test
    void test() {

        this.em.createNativeQuery(QUERY, TestEntity.class, "test_entity")
                .getResultList();
    }

```

The new error:

```auto
org.hibernate.sql.ast.tree.from.UnknownTableReferenceException: Unable to determine TableReference (`test_entity_bar_vw`) for `com. ****.spring.data.jpa.test.postgres.entity.TestEntity(test_entity).bar`
	at org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier.resolveTableReference(ColumnReferenceQualifier.java:74)
	at org.hibernate.query.results.dynamic.DynamicFetchBuilderStandard.lambda$getSelectableConsumer$0(DynamicFetchBuilderStandard.java:185)
	at org.hibernate.metamodel.mapping.BasicValuedModelPart.forEachSelectable(BasicValuedModelPart.java:54)
	at org.hibernate.query.results.dynamic.DynamicFetchBuilderStandard.buildFetch(DynamicFetchBuilderStandard.java:87)
	at org.hibernate.query.results.DomainResultCreationStateImpl.lambda$createFetchableConsumer$3(DomainResultCreationStateImpl.java:539)
	at org.hibernate.metamodel.mapping.internal.ImmutableAttributeMappingList.forEach(ImmutableAttributeMappingList.java:44)
	at org.hibernate.persister.entity.AbstractEntityPersister.visitFetchables(AbstractEntityPersister.java:6134)
	at org.hibernate.query.results.DomainResultCreationStateImpl.visitFetches(DomainResultCreationStateImpl.java:454)
	at org.hibernate.sql.results.graph.AbstractFetchParent.afterInitialize(AbstractFetchParent.java:30)
	at org.hibernate.sql.results.graph.entity.AbstractEntityResultGraphNode.afterInitialize(AbstractEntityResultGraphNode.java:69)
	at org.hibernate.persister.entity.AbstractEntityPersister.createDomainResult(AbstractEntityPersister.java:1319)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.lambda$buildResult$0(DynamicResultBuilderEntityStandard.java:147)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.buildResultOrFetch(DynamicResultBuilderEntityStandard.java:307)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.buildResult(DynamicResultBuilderEntityStandard.java:146)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.buildResult(DynamicResultBuilderEntityStandard.java:51)
	at org.hibernate.query.results.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:229)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:325)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:115)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:138)
	at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:656)
	at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
	at org.hibernate.query.Query.getResultList(Query.java:120)
	at com. ****.spring.data.jpa.repository.TestEntityIT.test(TestEntityIT.java:54)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

```

---

<div class="post-metadata">

**Author:** ![mbladel](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/mbladel/32/2128_2.png) [@mbladel](https://discourse.hibernate.org/u/mbladel)\
**Post date:** [February 13, 2024, 8:32am UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/2 "2024-02-13T08:32:03Z")

</div>

Why are you using `createNativeQuery()` and not just simply an HQL query like `em.createQuery("select t from TestEntity t", TestEntity.class)`? The latter should be able to handle secondary tables for you, without the need of creating dedicated views.

---

<div class="post-metadata">

**Author:** ![Jeff\_Maxwell](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jeff_maxwell/32/1789_2.png) [@Jeff\_Maxwell](https://discourse.hibernate.org/u/Jeff_Maxwell)\
**Post date:** [February 13, 2024, 3:08pm UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/3 "2024-02-13T15:08:19Z")

</div>

This is a simplified example of the actual query.

The actual query needs to be native as it interrogates arbitrary fields in jsonb columns.  
Since we don’t know the keys ahead of time we are limited in our indexing strategies, so what is shown in the below example has given us the best index utilization. Note that the keys and values are set via named parameters and each parameter is properly escaped json and checked for SQL injection attacks.

```sql

config->'someKey' = ANY(ARRAY['"someKeyValue1"','"someKeyValue2"']::jsonb[])
AND
config->'someOtherKey' = ANY(ARRAY['"someOtherKeyValue1"','"someOtherKeyValue2"']::jsonb[])

```

Further, I have also tried:

```java
    static final String QUERY = """
                  SELECT
                      {test_entity.*},
                      test_entity_bar_vw."bar" AS {test_entity.bar}
                   FROM
                       test_entity test_entity
                    JOIN
                       test_entity_bar_vw test_entity_bar_vw ON (test_entity."test_entity_id" = test_entity_bar_vw."test_entity_id")
     """;

    @Test
    void test() {

        this.em.createNativeQuery(QUERY, TestEntity.class, "test_entity")
                .getResultList();
    }

```

That one fails with:

```auto
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [SELECT
  test_entity."test_entity_id" test_ent1_0_0_,test_entity."business_key" business2_0_0_,test_entity."data" data3_0_0_,test_entity."bar" bar1_1_0_,
  test_entity_bar_vw."bar" AS bar1_1_0_
FROM
  test_entity test_entity
JOIN
  test_entity_bar_vw test_entity_bar_vw ON (test_entity."test_entity_id" = test_entity_bar_vw."test_entity_id")
] [ERROR: column test_entity.bar does not exist
  Position: 126] [n/a]
	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:265)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
	at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getMetaData(AbstractResultSetAccess.java:36)
	at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getColumnCount(AbstractResultSetAccess.java:52)
	at org.hibernate.query.results.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:193)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:325)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:115)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:138)
	at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:656)
	at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
	at org.hibernate.query.Query.getResultList(Query.java:120)
	at com. *****.spring.data.jpa.repository.TestEntityIT.testQUERY_WITH_SEP(TestEntityIT.java:72)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: org.postgresql.util.PSQLException: ERROR: column test_entity.bar does not exist
  Position: 126
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2712)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2400)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:367)
	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
	at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:134)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
	... 17 more

	... 17 more

```

---

<div class="post-metadata">

**Author:** ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)\
**Post date:** [February 16, 2024, 6:53am UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/4 "2024-02-16T06:53:29Z")

</div>

Try this query instead:

```sql
                  SELECT
                      {test_entity.*},
                      test_entity_bar_vw."bar" AS bar
                   FROM
                       test_entity test_entity
                    JOIN
                       test_entity_bar_vw test_entity_bar_vw ON (test_entity."test_entity_id" = test_entity_bar_vw."test_entity_id")

```

---

<div class="post-metadata">

**Author:** ![Jeff\_Maxwell](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jeff_maxwell/32/1789_2.png) [@Jeff\_Maxwell](https://discourse.hibernate.org/u/Jeff_Maxwell)\
**Post date:** [February 16, 2024, 8:25pm UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/5 "2024-02-16T20:25:15Z")

</div>

No luck.

I tried it two ways: with byte code enhancement and Lazy Fetching and once without:

```java
    @Column(name = "bar", table = "test_entity_bar_vw", nullable = true, unique = false, insertable = false,
        updatable = false)
    @Basic(fetch = FetchType.LAZY)
    String bar;

```

```java
    @Column(name = "bar", table = "test_entity_bar_vw", nullable = true, unique = false, insertable = false,
        updatable = false)
    String bar;

```

This test fails for both:

```java
    @Test
    void testWithOnJoin() {

        var query
                = """
                        SELECT
                            {test_entity.*},
                            test_entity_bar_vw."bar" AS bar
                         FROM
                             test_entity test_entity
                          JOIN
                             test_entity_bar_vw test_entity_bar_vw ON (test_entity."test_entity_id" = test_entity_bar_vw."test_entity_id")
                                            """;

        this.em.createNativeQuery(query, TestEntity.class, "test_entity")
                .getResultList();
    }

```

This is the exception I receive when using bytecode enhancement and Lazy fetching. (Which is the same error I receive when not using bytecode enhancement but using a view [see my original post], it appears that the view and the bytecode enhancement both get further along [ResultSetMappingImpl:229 vs ResultSetMappingImpl:193] before they fail than the plain jane example):

```auto
org.hibernate.sql.ast.tree.from.UnknownTableReferenceException: Unable to determine TableReference (`test_entity_bar_vw`) for `com. *****.spring.data.jpa.test.postgres.entity.TestEntity(TestEntity).bar`
	at org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier.resolveTableReference(ColumnReferenceQualifier.java:74)
	at org.hibernate.query.results.dynamic.DynamicFetchBuilderStandard.lambda$getSelectableConsumer$0(DynamicFetchBuilderStandard.java:185)
	at org.hibernate.metamodel.mapping.BasicValuedModelPart.forEachSelectable(BasicValuedModelPart.java:54)
	at org.hibernate.query.results.dynamic.DynamicFetchBuilderStandard.buildFetch(DynamicFetchBuilderStandard.java:87)
	at org.hibernate.query.results.DomainResultCreationStateImpl.lambda$createFetchableConsumer$3(DomainResultCreationStateImpl.java:539)
	at org.hibernate.metamodel.mapping.internal.ImmutableAttributeMappingList.forEach(ImmutableAttributeMappingList.java:44)
	at org.hibernate.persister.entity.AbstractEntityPersister.visitFetchables(AbstractEntityPersister.java:6134)
	at org.hibernate.query.results.DomainResultCreationStateImpl.visitFetches(DomainResultCreationStateImpl.java:454)
	at org.hibernate.sql.results.graph.AbstractFetchParent.afterInitialize(AbstractFetchParent.java:30)
	at org.hibernate.sql.results.graph.entity.AbstractEntityResultGraphNode.afterInitialize(AbstractEntityResultGraphNode.java:69)
	at org.hibernate.persister.entity.AbstractEntityPersister.createDomainResult(AbstractEntityPersister.java:1319)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.lambda$buildResult$0(DynamicResultBuilderEntityStandard.java:147)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.buildResultOrFetch(DynamicResultBuilderEntityStandard.java:307)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.buildResult(DynamicResultBuilderEntityStandard.java:146)
	at org.hibernate.query.results.dynamic.DynamicResultBuilderEntityStandard.buildResult(DynamicResultBuilderEntityStandard.java:51)
	at org.hibernate.query.results.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:229)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:325)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:115)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:138)
	at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:656)
	at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
	at org.hibernate.query.Query.getResultList(Query.java:120)
	at com. ****.spring.data.jpa.repository.TestEntityIT.testWithOnJoin(TestEntityIT.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

```

The exception when not using bytecode enhancement:

```auto
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [SELECT
    test_entity.test_entity_id test_ent1_0_0_,test_entity.business_key business2_0_0_,test_entity.data data3_0_0_,test_entity.bar bar1_1_0_,
    test_entity_bar_vw."bar" AS bar
 FROM
     test_entity test_entity
  JOIN
     test_entity_bar_vw test_entity_bar_vw ON (test_entity."test_entity_id" = test_entity_bar_vw."test_entity_id")
] [ERROR: column test_entity.bar does not exist
  Position: 122] [n/a]
	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:265)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
	at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getMetaData(AbstractResultSetAccess.java:36)
	at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getColumnCount(AbstractResultSetAccess.java:52)
	at org.hibernate.query.results.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:193)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:325)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:115)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:138)
	at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:656)
	at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:427)
	at org.hibernate.query.Query.getResultList(Query.java:120)
	at com. ****.spring.data.jpa.repository.TestEntityIT.testWithOnJoin(TestEntityIT.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: org.postgresql.util.PSQLException: ERROR: column test_entity.bar does not exist
  Position: 122
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2712)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2400)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:367)
	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
	at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:134)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
	... 17 more

```

Config info:

Hibernate: 6.4.4  
Postgres: 16.2  
Java: 17.0.10  
Spring Data JPA: 3.2.2  
HikariCP: 5.1.0

Settings:

```auto
hibernate.archive.scanner=org.hibernate.boot.archive.scan.internal.DisabledScanner,
hibernate.cdi.extensions=true,
hibernate.connection.datasource=HikariDataSource (HikariPool-1),
hibernate.connection.handling_mode=DELAYED_ACQUISITION_AND_HOLD,
hibernate.format_sql=true,
hibernate.generate_statistics=true,
hibernate.globally_quoted_identifiers=false,
hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy,
hibernate.jmx.enabled=false,
hibernate.jmx.usePlatformServer=false,
hibernate.persistenceUnitName=default,
hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy,
hibernate.resource.beans.container=org.springframework.orm.hibernate5.SpringBeanContainer@53525379,
hibernate.show_sql=true,
hibernate.transaction.coordinator_class=class org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorBuilderImpl,
hibernate.transaction.jta.platform=org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform@1be3f8f8,
hibernate.type.json_format_mapper=org.hibernate.type.format.jackson.JacksonJsonFormatMapper@2487e20,
jakarta.persistence.nonJtaDataSource=HikariDataSource (HikariPool-1),
jakarta.persistence.sharedCache.mode=UNSPECIFIED,
jakarta.persistence.validation.mode=AUTO,

```

---

<div class="post-metadata">

**Author:** ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)\
**Post date:** [February 19, 2024, 1:51pm UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/6 "2024-02-19T13:51:56Z")

</div>

Please try to create a reproducer with our [test case template](https://github.com/hibernate/hibernate-test-case-templates/blob/master/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/JPAUnitTestCase.java) and if you are able to reproduce the issue, create a bug ticket in our [issue tracker](https://hibernate.atlassian.net) and attach that reproducer.

---

<div class="post-metadata">

**Author:** ![Jeff\_Maxwell](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jeff_maxwell/32/1789_2.png) [@Jeff\_Maxwell](https://discourse.hibernate.org/u/Jeff_Maxwell)\
**Post date:** [February 19, 2024, 11:26pm UTC](https://discourse.hibernate.org/t/how-do-execute-a-native-query-for-an-entity-that-has-a-property-populated-via-secondarytable/9016/7 "2024-02-19T23:26:00Z")

</div>

Issue here:  
[https://hibernate.atlassian.net/browse/HHH-17756](https://hibernate.atlassian.net/browse/HHH-17756)

Test cases here: [hibernate-test-case-templates/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs at bugs/HHH-17756-SecondaryTable-native-query-issue · jmax01/hibernate-test-case-templates · GitHub](https://github.com/jmax01/hibernate-test-case-templates/tree/bugs/HHH-17756-SecondaryTable-native-query-issue/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs)
