On Mon, Sep 2, 2024 at 2:34 PM Nico van de Kamp <[email protected]>
wrote:

> The flag "...flag governing the identifier style...", if understand it,
> this is about rendering query in the console log. How is shown in the
> console log of IntelliJ, right?  In the settings.java file I found that it
> is set as:
> protected RenderQuotedNames renderQuotedNames = RenderQuotedNames.
> EXPLICIT_DEFAULT_QUOTED;
>

It affects all SQL rendering, including that of the console log.


> But what I mean is at the time of coding. The JooQ converter is so far as
> I know qoutes everthing. And I have that qouted query working.
> Now I'm trying to transform the same query and remove the qoutes, so that
> it is easier to read and to follow. When I write this, I'm suddenly
> thinking does the compiler use the 'RenderQoutedNames' flag?
>

I don't really know what you mean by "compiler" using the flag, or "jOOQ
converter" in general. jOOQ renders SQL, irrespective of how you're using
it, or where you're sending / executing this SQL. This flag affects how
jOOQ renders SQL. Anyway, I don't think that's the question here. I was
just trying to help given that you thought things were "unreadable." Let's
focus on the actual problem.


> I believe when I'm writing this, I slowly understand what's happening.
> My function will return an Kotlin "Boolean". My query result is true or
> false and I expect simply that this result is returned by the function. But
> that is an misunderstood I suppose. The result of the query is a JooQ
> boolean... or at least not a Kotlin Boolean? Or has this nothing todo with
> ift? I have tried this:
> .fetchOne()?.let { true } ?: false                 // this doesn't work
> either
>

jOOQ is an API written in Java. When you're using it from Kotlin, you will
occasionally have to know about how Kotlin interoperates with Java. The
Kotlin "Boolean?" to "java.lang.Boolean" mapping is straightforward, in my
opinion.

Now, fetchOne() returns an "org.jooq.Record?" As you can see e.g. the
Javadoc:
https://www.jooq.org/javadoc/latest/org.jooq/org/jooq/ResultQuery.html#fetchOne()

Your IDE probably helps you with this as well. Do look at the type hints
from your IDE, or assign expressions to local variables with explicit type
declarations to better understand what's going on. With this in mind, you
obviously can't just make this expression true or false like that. The
expression is of type Record! (possibly containing 1 row and 1 column, in
your case). I think this suffices to help you figure out what you're going
to do?


> *My expection is: the query result is true or false. That result needs to
> be returned by the function, to the caller function.*
> * What for me hard to understand is, I have written the exact same query
> without qoutes, but now the query without the qoutes, I get an error on
> fetchOne?And it is the same fetchOne as the query with qoutes!*
>

I don't know what you mean by "with quotes and without quotes," the
discussion starts being a bit confusing for me. But I already explained to
you why you can't pass Boolean.class there (you probably took a Java
example off the web). You have to pass the Kotlin equivalent
Boolean::class.java expression instead.

*(BTW all the queries in this project are unqouted, I'm now a few months on
> this project, somebody else has started this project 5 years ago, but has
> left)*
>
> Op maandag 2 september 2024 om 08:04:34 UTC+2 schreef [email protected]:
>
> We have a flag governing the identifier style, if this is what's troubling
> you in terms of "hard to read":
>
> https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/custom-settings/settings-name-style
>
> Boolean.class isn't valid kotlin. Did you intend to write Boolean::class?
> But with the jOOQ API, you'll have to pass Boolean::class.java (in order to
> pass a java.lang.Class<?> reference)
>
> On Sun, Sep 1, 2024 at 9:54 PM Nico van de Kamp <[email protected]>
> wrote:
>
> I hava converted with the JooQ converter from SQL to JooQ. After some
> struggling it is working. But I don't like it with, it hard and a lot to
> read like:
> table(unquotedName("tablename")).`as`(unquotedName("zz")),
> and
> field(name("zai2", "a_id")).eq(field(name("zai", "a_id")))
>
> So I have rewritten this like:
> override fun inconsistentCheck(zaakId: ZaakId): Boolean = usingDSL { context
> ->
>
> val ZaakMainAlias = ZAAK.`as`("ZAAK_MAIN")
> val AgendaMainAlias = AGENDA.`as`("AGENDA_MAIN")
> val AgendaItemMainAlias = AGENDA_ITEM.`as`("AGENDA_ITEM_MAIN")
>
> context
> .select(
> `when`(count().gt(0), `val`(true)).otherwise(`val`(false))
> )
> .from(ZaakMainAlias
> ,AgendaMainAlias
> ,AgendaItemMainAlias
> )
> .where(ZaakMainAlias.ID.eq(zaakId.value)
> .and(AgendaMainAlias.ZAAK_ID.eq(ZaakMainAlias.ID))
> .and(AgendaMainAlias.ACTUEEL.eq(inline(true)))
> .and(AgendaItemMainAlias.AGENDA_ID.eq(AgendaMainAlias.ID))
>
> ).fetchOne(0, Boolean.class) == true
> }
>
> But query itself has not been changed, just removing the quoted text.
> Now I get an error "None of the following functions can be called with the
> arguments supplied." (see screenshot.) on
> ).fetchOne(0, Boolean.class) == true
> Why? Ok, the query is transformed from qouted to non-qouted, but still the
> same further!??
>
> What kind of mistake do I maken or do I not understand?
>
> If I look to the screenshot, There is now not a Boolean expected? [image:
> fetchOne Boolean error.png]
>
> --
> You received this message because you are subscribed to the Google Groups
> "jOOQ User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jooq-user/74a1c2bf-f53c-4bb7-a624-fcff90103f07n%40googlegroups.com
> <https://groups.google.com/d/msgid/jooq-user/74a1c2bf-f53c-4bb7-a624-fcff90103f07n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> --
> You received this message because you are subscribed to the Google Groups
> "jOOQ User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jooq-user/f00e8df3-f88d-45e5-ade5-90d0f9be168bn%40googlegroups.com
> <https://groups.google.com/d/msgid/jooq-user/f00e8df3-f88d-45e5-ade5-90d0f9be168bn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jooq-user/CAB4ELO7JoODHKLPvZd1E3_aNN5qtv9mq2WdRQx737M%3Dyy1tVQA%40mail.gmail.com.

Reply via email to