Jdbi: рдХреЛрдЯрд▓рд┐рди рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рдЕрдзрд┐рднрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ (рдЕрдиреБрдкрд▓рдмреНрдз рдкреБрд▓ рд╡рд┐рдзрд┐)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЕрдЧре░ 2019  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jdbi/jdbi

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЬреЗрдиреЗрд░рд┐рдХ рдФрд░ рдЬреЗрдбреАрдмреАрдЖрдИ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рдХрд╛рдо рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рд╣реИ (рдпрджреНрдпрдкрд┐ рдЬреЗрдбреАрдмреАрдЖрдИ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде), рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

org.jdbi.v3.sqlobject.UnableToCreateSqlObjectException: рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд╛рд░ рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╣реИрдВ [рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ java.lang.Object Foo.baz (java.util.UUID), рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ java.util.UUID Bar.baz(java.util.UUID) )], рдХреГрдкрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░реЗрдВ

http://jdbi.org/#_annotations_and_inheritance

рдореИрдВрдиреЗ рдЕрдЪреНрдЫреЗ рдЙрдкрд╛рдп рдХреЗ рд▓рд┐рдП @Override рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ред

interface Foo<T> {
    <strong i="12">@SqlQuery</strong>
    fun baz(a: UUID): T
}

interface Bar : Foo<UUID> {
    @SqlQuery("SELECT ClientID " +
              "FROM ClientInstance " +
              "WHERE ClientInstanceID = ?")
    override fun baz(a: UUID): UUID
}

JDBI.inTransactionUnchecked { handle ->
    val tester = handle.attach(Bar::class.java)
    val hest = tester.baz(UUID.fromString("7a949c0e-28db-424a-a449-b118e5175a3b"))
    LOGGER.info { "hest $hest" }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп рддреЛрд░,
рд╣рдордиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рд╡реИрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ: https://github.com/jdbi/jdbi/blob/master/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestSqlObject.java#L293 - рдПрд▓рейрежрен
рд╢рд╛рдпрдж рд╣рдо рдХреЛрдЯрд▓рд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрд╕ рдЪреВрдХ рдЧрдПред рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬреЛ рднреА рдмрдЧ рдЦреБрд▓рд╛ рд╣реИ рдЙрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп рддреЛрд░,
рд╣рдордиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рд╡реИрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ: https://github.com/jdbi/jdbi/blob/master/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestSqlObject.java#L293 - рдПрд▓рейрежрен
рд╢рд╛рдпрдж рд╣рдо рдХреЛрдЯрд▓рд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрд╕ рдЪреВрдХ рдЧрдПред рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬреЛ рднреА рдмрдЧ рдЦреБрд▓рд╛ рд╣реИ рдЙрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрд╣, рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ: рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ рд╣реИрдВ, Object рдмрдирд╛рдо UUID ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдмреНрд░рд┐рдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рддрдм рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред

Google рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрдЧ рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдЬрдм рдореВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдиреЛрдЯреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛!)

Exception in thread "main" java.lang.IllegalStateException: Method StringRepo.get must be default or be annotated with a SQL method annotation.
    at org.jdbi.v3.sqlobject.SqlObjectFactory.lambda$buildMethodHandler$15(SqlObjectFactory.java:148)
...
interface Repo<T> {
    fun get(): T
}
interface StringRepo : Repo<String> {
    @SqlQuery("SELECT 'Hello world!'")
    override fun get(): String
}
//...snip
jdbi.onDemand(StringRepo::class.java).get()

@LittleMikeDev , рдпрд╣ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреНрд░рд╛рдордХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдЧрд╛рдпрдм рд╣реИ: https://github.com/jdbi/jdbi/pull/1590/files#diff -75b1c04d402bd8924262c7fececfcdb1L166

@TorRanfelt , рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдФрд░ рдЦреЛрджрд╛ рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╡рд┐рдзрд┐ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдХреЛрдЯрд▓рд┐рди рдмрдЧ рдЯреНрд░реИрдХрд░ рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХреА: https://youtrack.jetbrains.com/issue/KT-33634

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, Jdbi рдЖрд╡рд╢реНрдпрдХ рдмреНрд░рд┐рдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд╢рд╛рдпрдж рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдХрдо рд╕реЗ рдХрдо рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред

@stevenschlansker рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдХреЛрдЯрд▓рд┐рди рдХреЗ рдкрд╛рд╕ рдпрд╣ рдкреБрд▓ рдкрд╣рд▓реЗ рднреА рд░рд╣рд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рджреЗрдЦрд╛ рд╣реИред - рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ JDBI рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдХрд░ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ 6 рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордЭреМрддрд╛ рдерд╛: 6 рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдмреНрд░рд┐рдЬ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди рдЙрдиреНрд╣реЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдЬрдХрд▓ рдмрд╣реБрдд рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж 10 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛;) рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рдЬрд▓реНрдж рд╣реА 6 рд╕рдорд░реНрдерди рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯ -6 рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

nonameplum picture nonameplum  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bakstad picture bakstad  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mcarabolante picture mcarabolante  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dhardtke picture dhardtke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

qualidafial picture qualidafial  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ