I do see the annotations supported in Ignite 3 in addition to the
tabledescriptor builder API

https://ignite.apache.org/docs/ignite3/latest/developers-guide/java-to-tables

Please check @Table, @Column and other  annotations that are located in the
org.apache.ignite.catalog.annotations package in order to migrate from
Ignite 2 annotations.


On Mon, Apr 21, 2025, 8:21 PM ypeng <yp...@t-online.de> wrote:

> In Apache Ignite 3.0.0, the `@QuerySqlField` annotation has indeed been
> removed as part of a major architectural overhaul. This significant
> change affects how you define queryable fields in your domain models.
>
> For Ignite 3.0.0, the recommended approach is to use the new Table API
> instead of annotations. In this new model, you define tables
> programmatically rather than using annotations on your Java classes.
>
> Here's how you can transition from the annotation-based approach to the
> new Table API:
>
> 1. Instead of annotating fields with `@QuerySqlField`, you'll now create
> table definitions using `TableDescriptor` and the fluent API.
>
> 2. Basic example of creating a table in Ignite 3.0.0:
>
> ```java
> TableDescriptor table = TableDescriptor.builder()
>      .name("MyTable")
>      .addColumn("id", ColumnType.INT32, true)  // primary key
>      .addColumn("name", ColumnType.STRING)
>      .addColumn("age", ColumnType.INT32)
>      .build();
>
> tables.createTable(table).get();
> ```
>
> 3. For working with the data, you'll use the Table API methods for CRUD
> operations rather than putting/getting annotated objects.
>
> The shift from 2.x to 3.0.0 is substantial and requires rethinking your
> data model approach. The new version moves away from the "object in the
> cache" model toward a more traditional table-based database approach.
>
> If you have a significant investment in the annotation-based approach
> and need to maintain compatibility, you might consider:
>
> 1. Staying on Ignite 2.x for the time being
> 2. Creating an abstraction layer in your code to isolate the
> Ignite-specific parts, making future migration easier
> 3. Gradually migrating components to use the new Table API while
> maintaining the old components on 2.x
>
> The Ignite 3.0 documentation provides comprehensive guidance on the new
> Table API and migration strategies from 2.x.
>
> João Lola:
> > I am currently using Apache Ignite 2.17.0 on a project I am working on,
> > I am interested in upgrading to 3.0.0. But I notice query annotations,
> > e.g @QuerySqlField are no longer available as of 3.0.0, so my question
> > is what can I use in 3.0.0 to replace it if available, if not what is
> > recommend to use instead?
>
>

Reply via email to