Search code examples
javamysqlspringjpaintellij-idea

How to get pure String value from SQL format in IntelliJ?


    @Query(value = " with cte as (\n" +
            "    select id, 1 as quantity\n" +
            "    from product\n" +
            "    where id = :productId\n" +
            "    union all\n" +
            "    select distinct combo_id as id,\n" +
            "                    quantity\n" +
            "    from combo\n" +
            "    where product_id = :productId),\n" +
            "     result as (\n" +
            "         select o.product_id, o.quantity * c.quantity as 'quantity'\n" +
            "         from order_product o\n" +
            "                  inner join cte c\n" +
            "                             on o.product_id = c.id\n" +
            "     )\n" +
            "select sum(quantity)\n" +
            "from result", nativeQuery = true)
    Object method(@Param("productId") String productId);

I am using Spring Jpa to write the SQL query, the IntelliJ supports me to reformat SQL easy to read. However, when I try to copy this SQL to run in the database, it has a lot of redundant characters I need to remove such as + " \n. How can I do for copying only the value of this query?


Solution

  • Type Alt+Enter on the query string and invoke Copy string concatenation text to the clipboard.

    Also if you are working on Java 15 or higher, consider converting the string concatenation to a Text Block. (IntelliJ IDEA has a "Text block can be used" inspection for that). Text blocks are easier to copy and paste and easier to read as well:

        @Query(value = """
             with cte as (
                select id, 1 as quantity
                from product
                where id = :productId
                union all
                select distinct combo_id as id,
                                quantity
                from combo
                where product_id = :productId),
                 result as (
                     select o.product_id, o.quantity * c.quantity as 'quantity'
                     from order_product o
                              inner join cte c
                                         on o.product_id = c.id
                 )
            select sum(quantity)
            from result""", nativeQuery = true)
        Object method(@Param("productId") String productId);