# @JoinFormula doesn't work with native queries

**URL:** <https://discourse.hibernate.org/t/joinformula-doesnt-work-with-native-queries/12134>\
**Category:** Hibernate ORM\
**Created:** [February 1, 2026, 8:02pm UTC](https://discourse.hibernate.org/t/joinformula-doesnt-work-with-native-queries/12134 "2026-02-01T20:02:32Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![StratosGiak](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/stratosgiak/32/4274_2.png) [@StratosGiak](https://discourse.hibernate.org/u/StratosGiak)\
**Post date:** [February 1, 2026, 8:02pm UTC](https://discourse.hibernate.org/t/joinformula-doesnt-work-with-native-queries/12134/1 "2026-02-01T20:02:33Z")

</div>

Version info: `hibernate-core: 7.2.1 (spring-boot-hibernate: 4.0.2)`

I am trying to use `@JoinFormula`, but I’m having trouble when executing native queries. It works great when I stick to HQL, but it throws for native queries. I have prepared a minimal example [here](https://github.com/StratosGiak/join-formula-test), but here are the relevant parts:

```java
@Entity
public class History {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(columnDefinition = "TIMESTAMP")
    private LocalDateTime date = LocalDateTime.now();

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn
    private Person person;
}

```

```java
@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToMany(mappedBy = "person")
    private List<History> historyList;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinFormula("(SELECT history.id FROM history WHERE history.person_id = id ORDER BY history.date DESC LIMIT 1)")
    private History activeHistory;
}

```

```java
public interface PersonRepository extends JpaRepository<Person, Long> {
    @Query(value = "SELECT p FROM Person p")
    List<Person> get();

    @Query(value = "SELECT p.* FROM Person p", nativeQuery = true)
    List<Person> getNative();
}

```

The `get()` method works as expected, but `getNative()` throws

> **Log**
>
> ```auto
> 2026-02-01T21:44:29.930+02:00 INFO 12128 --- [main] o.e.joinformula.JoinFormulaApplication : Starting JoinFormulaApplication using Java 21.0.2 with PID 12128 (C:\dev\join-formula-test\target\classes started by Stratos in C:\dev\join-formula-test)
> 2026-02-01T21:44:29.934+02:00 INFO 12128 --- [main] o.e.joinformula.JoinFormulaApplication : No active profile set, falling back to 1 default profile: "default"
> 2026-02-01T21:44:30.317+02:00 INFO 12128 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
> 2026-02-01T21:44:30.379+02:00 INFO 12128 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 54 ms. Found 2 JPA repository interfaces.
> 2026-02-01T21:44:30.713+02:00 INFO 12128 --- [main] org.hibernate.orm.jpa : HHH008540: Processing PersistenceUnitInfo [name: default]
> 2026-02-01T21:44:30.765+02:00 INFO 12128 --- [main] org.hibernate.orm.core : HHH000001: Hibernate ORM core version 7.2.1.Final
> 2026-02-01T21:44:31.303+02:00 INFO 12128 --- [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
> 2026-02-01T21:44:31.345+02:00 INFO 12128 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
> 2026-02-01T21:44:31.596+02:00 INFO 12128 --- [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:file:./my_database user=SA
> 2026-02-01T21:44:31.599+02:00 INFO 12128 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
> 2026-02-01T21:44:31.654+02:00 INFO 12128 --- [main] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
> Database JDBC URL [jdbc:h2:file:./my_database]
> Database driver: H2 JDBC Driver
> Database dialect: H2Dialect
> Database version: 2.4.240
> Default catalog/schema: MY_DATABASE/PUBLIC
> Autocommit mode: undefined/unknown
> Isolation level: READ_COMMITTED [default READ_COMMITTED]
> JDBC fetch size: 100
> Pool: DataSourceConnectionProvider
> Minimum pool size: undefined/unknown
> Maximum pool size: undefined/unknown
> 2026-02-01T21:44:32.438+02:00 DEBUG 12128 --- [main] org.hibernate.SQL : create global temporary table HTE_person(rn_ integer not null, activeHistory_id bigint, id bigint, primary key (rn_)) transactional
> 2026-02-01T21:44:32.440+02:00 DEBUG 12128 --- [main] org.hibernate.SQL : create global temporary table HTE_history(rn_ integer not null, date TIMESTAMP, id bigint, person_id bigint, primary key (rn_)) transactional
> 2026-02-01T21:44:32.561+02:00 INFO 12128 --- [main] org.hibernate.orm.core : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
> 2026-02-01T21:44:32.589+02:00 INFO 12128 --- [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
> 2026-02-01T21:44:32.670+02:00 INFO 12128 --- [main] o.s.d.j.r.query.QueryEnhancerFactories : Hibernate is in classpath; If applicable, HQL parser will be used.
> 2026-02-01T21:44:33.409+02:00 INFO 12128 --- [main] o.e.joinformula.JoinFormulaApplication : Started JoinFormulaApplication in 3.921 seconds (process running for 4.429)
> 2026-02-01T21:44:33.474+02:00 DEBUG 12128 --- [main] org.hibernate.SQL : select p1_0.id,(SELECT history.id FROM history WHERE history.person_id = p1_0.id ORDER BY history.date DESC LIMIT 1) from person p1_0
> 2026-02-01T21:44:33.515+02:00 INFO 12128 --- [main] org.example.joinformula.Demo : get() works: [Person(id=1, historyList=[History(id=1, date=2026-01-02T01:02:03), History(id=2, date=2026-01-03T01:02:03)], activeHistory=History(id=2, date=2026-01-03T01:02:03))]
> 2026-02-01T21:44:33.550+02:00 DEBUG 12128 --- [main] org.hibernate.SQL : SELECT p.* FROM Person p
> 2026-02-01T21:44:33.565+02:00 WARN 12128 --- [main] org.hibernate.orm.jdbc.error : HHH000247: ErrorCode: 42122, SQLState: 42S22
> 2026-02-01T21:44:33.565+02:00 WARN 12128 --- [main] org.hibernate.orm.jdbc.error : Column "(SELECT history.id FROM history WHERE history.person_id = {@}.id ORDER BY history.date DESC LIMIT 1)" not found [42122-240]
> 2026-02-01T21:44:33.574+02:00 INFO 12128 --- [main] .s.b.a.l.ConditionEvaluationReportLogger : 
> 
> Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
> 2026-02-01T21:44:33.587+02:00 ERROR 12128 --- [main] o.s.boot.SpringApplication : Application run failed
> 
> org.springframework.dao.InvalidDataAccessResourceUsageException: Unable to find column position by name: (SELECT history.id FROM history WHERE history.person_id = {@}.id ORDER BY history.date DESC LIMIT 1) [Column "(SELECT history.id FROM history WHERE history.person_id = {@}.id ORDER BY history.date DESC LIMIT 1)" not found [42122-240]] [n/a]; SQL [n/a]
> at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:156) ~[spring-orm-7.0.3.jar:7.0.3]
> at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:131) ~[spring-orm-7.0.3.jar:7.0.3]
> at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.translateExceptionIfPossible(HibernateExceptionTranslator.java:105) ~[spring-orm-7.0.3.jar:7.0.3]
> at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:199) ~[spring-orm-7.0.3.jar:7.0.3]
> at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:556) ~[spring-orm-7.0.3.jar:7.0.3]
> at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:346) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:157) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:137) ~[spring-data-jpa-4.0.2.jar:4.0.2]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:222) ~[spring-aop-7.0.3.jar:7.0.3]
> at jdk.proxy2/jdk.proxy2.$Proxy113.getNative(Unknown Source) ~[na:na]
> at org.example.joinformula.Demo.run(Demo.java:29) ~[classes/:na]
> at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
> at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.example.joinformula.Demo$$SpringCGLIB$$0.run(<generated>) ~[classes/:na]
> at org.springframework.boot.SpringApplication.lambda$callRunner$1(SpringApplication.java:792) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:82) ~[spring-core-7.0.3.jar:7.0.3]
> at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-7.0.3.jar:7.0.3]
> at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:86) ~[spring-core-7.0.3.jar:7.0.3]
> at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:800) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:791) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.springframework.boot.SpringApplication.lambda$callRunners$0(SpringApplication.java:776) ~[spring-boot-4.0.2.jar:4.0.2]
> at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na]
> at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
> at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na]
> at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
> at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na]
> at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na]
> at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
> at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na]
> at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:328) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-4.0.2.jar:4.0.2]
> at org.example.joinformula.JoinFormulaApplication.main(JoinFormulaApplication.java:10) ~[classes/:na]
> Caused by: org.hibernate.exception.SQLGrammarException: Unable to find column position by name: (SELECT history.id FROM history WHERE history.person_id = {@}.id ORDER BY history.date DESC LIMIT 1) [Column "(SELECT history.id FROM history WHERE history.person_id = {@}.id ORDER BY history.date DESC LIMIT 1)" not found [42122-240]] [n/a]
> at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:64) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:34) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:115) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:101) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.resolveColumnPosition(AbstractResultSetAccess.java:81) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.DomainResultCreationStateImpl.resolveSqlExpression(DomainResultCreationStateImpl.java:271) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.ast.spi.SqlExpressionResolver.resolveSqlExpression(SqlExpressionResolver.java:105) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.metamodel.mapping.internal.SimpleForeignKeyDescriptor.createDomainResult(SimpleForeignKeyDescriptor.java:377) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.metamodel.mapping.internal.SimpleForeignKeyDescriptor.createKeyDomainResult(SimpleForeignKeyDescriptor.java:254) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping.generateFetch(ToOneAttributeMapping.java:1654) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping.generateFetch(ToOneAttributeMapping.java:113) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.results.graph.FetchParent.generateFetchableFetch(FetchParent.java:120) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.implicit.ImplicitFetchBuilderEntity.buildFetch(ImplicitFetchBuilderEntity.java:125) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.DomainResultCreationStateImpl.lambda$createFetchableConsumer$0(DomainResultCreationStateImpl.java:462) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.metamodel.mapping.internal.ImmutableAttributeMappingList.forEach(ImmutableAttributeMappingList.java:41) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.persister.entity.AbstractEntityPersister.visitFetchables(AbstractEntityPersister.java:5806) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.DomainResultCreationStateImpl.visitFetches(DomainResultCreationStateImpl.java:409) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.results.graph.AbstractFetchParent.afterInitialize(AbstractFetchParent.java:40) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.results.graph.entity.AbstractEntityResultGraphNode.afterInitialize(AbstractEntityResultGraphNode.java:72) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.persister.entity.AbstractEntityPersister.createDomainResult(AbstractEntityPersister.java:1291) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.dynamic.DynamicResultBuilderEntityCalculated.buildResult(DynamicResultBuilderEntityCalculated.java:122) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.dynamic.DynamicResultBuilderEntityCalculated.buildResult(DynamicResultBuilderEntityCalculated.java:24) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.results.internal.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:220) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValues(JdbcSelectExecutorStandardImpl.java:380) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:354) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:135) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:100) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:63) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:137) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:114) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:104) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:138) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:756) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:153) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.hibernate.query.Query.getResultList(Query.java:121) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:132) ~[spring-data-jpa-4.0.2.jar:4.0.2]
> at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:99) ~[spring-data-jpa-4.0.2.jar:4.0.2]
> at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:164) ~[spring-data-jpa-4.0.2.jar:4.0.2]
> at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:154) ~[spring-data-jpa-4.0.2.jar:4.0.2]
> at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:169) ~[spring-data-commons-4.0.2.jar:4.0.2]
> at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) ~[spring-data-commons-4.0.2.jar:4.0.2]
> at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:167) ~[spring-data-commons-4.0.2.jar:4.0.2]
> at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:146) ~[spring-data-commons-4.0.2.jar:4.0.2]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:69) ~[spring-data-commons-4.0.2.jar:4.0.2]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130) ~[spring-tx-7.0.3.jar:7.0.3]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.3.jar:7.0.3]
> at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:135) ~[spring-tx-7.0.3.jar:7.0.3]
> ... 37 common frames omitted
> Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "(SELECT history.id FROM history WHERE history.person_id = {@}.id ORDER BY history.date DESC LIMIT 1)" not found [42122-240]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) ~[h2-2.4.240.jar:2.4.240]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) ~[h2-2.4.240.jar:2.4.240]
> at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.4.240.jar:2.4.240]
> at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.4.240.jar:2.4.240]
> at org.h2.jdbc.JdbcResultSet.getColumnIndex(JdbcResultSet.java:3518) ~[h2-2.4.240.jar:2.4.240]
> at org.h2.jdbc.JdbcResultSet.findColumn(JdbcResultSet.java:178) ~[h2-2.4.240.jar:2.4.240]
> at com.zaxxer.hikari.pool.HikariProxyResultSet.findColumn(HikariProxyResultSet.java) ~[HikariCP-7.0.2.jar:na]
> at org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.resolveColumnPosition(AbstractResultSetAccess.java:77) ~[hibernate-core-7.2.1.Final.jar:7.2.1.Final]
> ... 83 common frames omitted
> 
> ```

It seems like the same issue was previously described [here](https://discourse.hibernate.org/t/native-query-failing-with-joinformula-in-parent-entity/6047), but the error message is different, and I’m not sure if it was resolved

---

<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 2, 2026, 11:56am UTC](https://discourse.hibernate.org/t/joinformula-doesnt-work-with-native-queries/12134/2 "2026-02-02T11:56:10Z")

</div>

It seems like this is a bug. Please try to create a reproducer with our [test case template](https://github.com/hibernate/hibernate-test-case-templates/blob/master/orm/hibernate-orm-7/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:** ![StratosGiak](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/stratosgiak/32/4274_2.png) [@StratosGiak](https://discourse.hibernate.org/u/StratosGiak)\
**Post date:** [February 3, 2026, 1:52am UTC](https://discourse.hibernate.org/t/joinformula-doesnt-work-with-native-queries/12134/3 "2026-02-03T01:52:33Z")

</div>

Created a ticket with a reproducer [here](https://hibernate.atlassian.net/browse/HHH-20133), I hope I did this right
