Даже если вам нужны функции 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. } EntityPathmyEntity = 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”