Рубрики
Без рубрики

Как использовать SQLQueryFactory с вашими объектами QueryDSL JPA

Даже если вам нужны функции QueryDSL SQL, такие как массовая вставка, вы, к сожалению, используете QueryDSL JPA… Помеченный java, spring, querydsl, jpa.

Даже если вам нужны функции QueryDSL SQL, такие как массовая вставка, вы используете QueryDSL JPA, к сожалению, нет способа сгенерировать RelationalPath из EntityPath автоматически.

Как отзыв @timo Westkämper Вы не можете автоматически превратить его в Реляционный путь

но вы можете создать RelationalPathBase, используя свой entityPath

RelationalPathBase relationalPathBase= new RelationalPathBase(this.entityPath.getType(), this.entityPath.getMetadata(), "yourSchemaName","yourTableName");

Но есть и хорошая новость. вы можете обернуть RelationalPath из EntityPath вручную следующим образом. итак, я создал класс util, который обертывает RelationalPath из EntityPath .

TL; DR: скопируйте приведенный ниже класс, примените его и используйте.

Как использовать? это очень просто. когда вы используете SQLQueryFactory , , , , затем просто вызовите QueryDslUtils.asRelational чтобы обернуть объект RelationalPath

@Entity
@Table(name = "my_table", schema = "my_schema") // MUST HAVE THIS ANNOTATION!
@Data // for Lombok
public class SomeEntity {
  @Column("some_col")
  private String someColumn;
  // ...getter, setter, etc.
}

EntityPath myEntity = QSomeEntity.someEntity;
RelationalPath sqlEntity = QueryDslUtils.asRelational(myEntity);

sqlQueryFactory.insert(sqlEntity)...execute();

Это все. счастливого кодирования!

Оригинал: “https://dev.to/composite/how-to-use-sqlqueryfactory-with-your-querydsl-jpa-entities-k64”