Releases: babyfish-ct/jimmer
v0.9.9
v0.9.5
v0.9.4
A new feature for save command is added.
By default, this key-only object is not id-only object, so it will be consider as long association and saved recursivly.
Now, save command support a new configuration:
setKeyOnlyAsReference(A::childNodes)
or setKeyOnlyAsReferenceAll()
.
This configuration change the default behavior, consider key-only as short association, it will be only referenced, will not be saved.
Before refer key-only object, jimmer will execute an extra select statement to convert keys to ids, so QueryReason.KEY_ONLY_AS_REFERENCE
is added.
v0.9.3
- Fixed issues #701, #725, #728.
- Added
NotUniqueKeyExceptionTranslator
into jimmer example projectsjimmer-sql
,jimmer-sql-kt
,jimmer-sql-graphql
,jimmer-sql-graphql-kt
. - Added new predicate
expressionIn
which is designed for expression collection, not value collection. - Added
unaryMinus
(-
in kotlin) for numeric expression.
v0.9.1
v0.9.0
Breaking Change
-
JSqlClient (jimmer-sql), KSqlClient (jimmer-sql), JRepository (jimmer-spring-boot-starter), KRepository (jimmer-spring-boot-starter)
-
Delete depcarated methods such as
merge(..., SaveMode)
andappend(...)
,saveAll(...)
,batchSave(...)
andbatchDelete(...)
-
For save methods whose name is not
save
(insert
,insertIfAbsent
,update
,marge
), the default value of AssociatedSaveMode is no longerREPLACE
, it becomes- insert: APPEND
- insertIfAbstent: APPEND_IF_ABSENT
- update: UPDATE
- merge: MERGE
-
-
JRepository (jimmer-spring-boot-starter), KRepository (jimmer-spring-boot-starter)
Remove depreacate method
pager
and nested typePager
-
JSqlClient (jimmer-sql), KSqlClient (jimmer-sql-kotlin)
Add method
findOneById
to query non-null object, if there is no existing object, an exception will be raised -
KSqlClient*(jimmer-sql)*
-
Add shortcut functions such as
executeQuery
,executeUpdate
,executeDelete
andfindAll(..., <lambda>)
-
Add extension function
exists
-
-
Associations (jimmer-sql), KAssociations (jimmer-sql-kotlin)
-
checkExistence
is renamed toingoreConflict
-
Add shortcut methods:
insert
,insertIfAbsent
,replace
,insertAll
,insertAllIfAbsent
andreplaceAll
-
-
KWeakJoin (jimmer-sql-kotlin)
Add a new method with a new parameter to support sub query.
-
AnnotationProcessor (jimmer-apt)
The generated util class
Objects
is renamed toImmutables
by default.
v0.8.186
Keep it consistent with Sber's speech
v0.8.130
-
Fix/Support #502, #3, #507, #511, #512, #513, #519, #521, #522, #523, #524, #525, #528, #530, #537, #531, #539, #541, #550, #551, #557
-
ScalarProvider
becomes interface, a new classAbstractScalarProvider
is provided. -
Fixed bug raised when both paging query and global filter are used.
-
inlist
predicates is changed. the max values become1000
(the limit or oracle, longer list will be splited to parts joined withor
), new configurationjimmer.in-list-padding-enabled
andjimmer.in-list-to-any-equality.enabled
is provided. -
Better join type deciding for dynamic predicate.
-
Replace jackson serializataion/deserialization of immutable objects, now it allows user to use any advanced feature of jackson.
-
Types decorated by
@Embeddable
and@Immutable
can be mapped by DTO language. -
Avoid to use
ctx.getBeansOfType
of spring framework which ignores the exceptions during object creating. -
Let nullable properties of input DTO support 4 modifiers: fixed, static, dynamic, fuzzy.
-
Logical deleted flag is automatically excluded from
allScalars
(Both fetcher and DTO language) -
User annotation
@ExcludedFromAllScalars
which allows any properties can be excluded fromallScalars
(Both fetcher and DTO language)
v0.8.116
-
SqlClient supports zoneId configuration, which can parse date data based on the time zone of the database instead of the time zone of the current JVM
-
Formula company attributes support associated attributes, see the following two examples (take kt as an example)
@Formulat(depenedencies = ["authors"])
val authorCount: Int
get() = authors.size()
@Formula(dependencies = ["authors.firstName", "authors.lastName"])
val authorNames: List<String>
get() = authors.map { "${it.firstName} ${it.lastName}" }
-
Support ImmutableCompanion for kotlin
@Entity
interface TreeNode {
... omit properties...
companion object: ImmutableCompanion
}
If you declare this companion object with the selection as an immutable interface, you can build the immutable object using the golang struct initialization style
val treeNode = TreeNode {
name = "etc"
childNodes = listOf(
TreeNode {
name = "host"
},
TreeNode {
name = "man.conf"
}
)
}
The corresponding example 'kotlin/jimmer-core-kt' has been modified
-
Fixed the bug that embeddable does not use flat mode in specification of DTO language
-
Kotlin can only be ToOne and Embeddable syntactic sugar
Previous code
store().apply { name = "MANING" website = "https://www.maning.com" }
Code now
store {
name = "MANING"
website = "https://www.maning.com"
}
- Update the Discord Link to a link that does not expire
v0.8.114
- Fix/Provide #449, #451,#452, #453, #466, #468, #469, #471, #473, #474, #476
- Fix a bug of jimmer-graphql
- Properties in embeddable type can be handled by both ObjectFetcher and DTO language
- Nested
flat
is supported in DTO language - Partial embeddable type is supported by save-command
- Formula property of entity can depend on nested properties of embeddable type
- Embeddable type supports formula properties
@JoinTable
supportscascadeDeletedBySource
andcascadeDeletedByTarget
- DTO language supports interface implementation