diff --git a/CHANGES.adoc b/CHANGES.adoc index bc531e7b9..f441b99e8 100644 --- a/CHANGES.adoc +++ b/CHANGES.adoc @@ -1,20 +1,30 @@ = Changes -== 3.2.42 +== 3.3 + +=== 3.3.0 + +First release in the 3.3.x line. No changes compared to the latest 3.2.42 release, but using the latest Neo4j Java 4.4 driver as a baseline dependencies. If you don't manage the driver in your application yourself, this will affect your dependencies as well. By upgrading from a 4.0 driver to the 4.4 driver as baseline, Neo4j-OGM 3.3 effectively drops support for all versions of Neo4j database prior to 3.5. + +Future supported versions of Neo4j-OGM will be 3.3 and 4.x. Neo4j-OGM 3.3 is for all projects that still require support for Neo4j 4.4 and 3.5. Neo4j-OGM 4.x is for all projects on Neo4j 4.4 or 5. + +== 3.2 + +=== 3.2.42 * [bug] Correctly filter query results, taking the fact that native ids are only sort of unique for the respecting entity type. (#952) -== 3.2.41 +=== 3.2.41 * [bug] Fix NullPointerException when parsing notification position from BoltResponse (#950) * [feature] Singe/composite index support for relationships (#948) * [improvement] Support for direct relationship mapping even if a `@RelationshipEntity` is defined (#951) -== 3.2.40 +=== 3.2.40 * Improve `Optional` handling in `FieldInfo`. -== 3.2.39 +=== 3.2.39 * Allow for classes to be registered dynamically with `DomainInfo`. * Introduce simple DTO mapping. @@ -25,30 +35,30 @@ * Add _this_ branch to GH workflow. * Allow dynamic user and database selection. -== 3.2.38 +=== 3.2.38 * Revert "Avoid unessary creation of builders." * Revert "Make reuse of existing builders threadsafe, check for property equality." -== 3.2.37 +=== 3.2.37 * [dependencies] Bump classgraph from 4.8.147 to 4.8.149 * [bug] Make reuse of existing builders threadsafe, check for property equality. * [improvement] Optimize class loading. -== 3.2.36 +=== 3.2.36 * [bug] Check for literal `null` properties coming from stored procedures. (#909) -== 3.2.35 +=== 3.2.35 * [dependencies] Bump classgraph from 4.8.141 to 4.8.147 -== 3.2.34 +=== 3.2.34 * [bug] Catch `ClientException` while consuming results, too. (Fixes https://github.com/spring-projects/spring-data-neo4j/issues/2542) -== 3.2.33 +=== 3.2.33 * [refactor] Remove unused methods, improve logging. * [test] Fix a flaky test. @@ -57,7 +67,7 @@ * [docs] Add latest Neo4j versions as supported. * [docs] Improve changelog entry. -== 3.2.32 +=== 3.2.32 * [bug] Don't flatten collections of known entities. (#902) * [improvement] Avoid unnecessary creation of builders. @@ -87,7 +97,7 @@ prior to the fix, `relAndNode` would have been returned as a single array. Now i See the notes in the linked commit and this https://github.com/neo4j/neo4j-ogm/issues/737#issuecomment-1079022137[comment]. -== 3.2.31 +=== 3.2.31 * [dependencies] Drop commons-lang3 from core dependencies. * [dependencies] Bump neo4j35 from 3.5.30 to 3.5.31 @@ -96,11 +106,11 @@ See the notes in the linked commit and this https://github.com/neo4j/neo4j-ogm/i * [dependencies] Bump slf4j from 1.7.25 to 1.7.36 * [improvement] Lazy hydrate response model. -== 3.2.30 +=== 3.2.30 * [improvement] Improve performance of `TypeAdapterLookupDelegate`. -== 3.2.29 +=== 3.2.29 * [improvement] Allow enums as composite property values. (#899) * [dependencies] Update to Classgraph 4.8.139. @@ -108,7 +118,7 @@ See the notes in the linked commit and this https://github.com/neo4j/neo4j-ogm/i * [improvement] Parse class hierarchy recursive. * [tests] Ensure locks are correct when object is reloaded. (#894) -== 3.2.28 +=== 3.2.28 * [dependencies] Upgrade Neo4j 3.5 to 3.5.30. * [improvement] Avoid locking on whole class for retrieving various information. (#891) @@ -118,11 +128,11 @@ See the notes in the linked commit and this https://github.com/neo4j/neo4j-ogm/i Thanks a lot to our long-time contributor @torstenkuhnhenne for providing the initial PR to remove the overly large locks in `ClassInfo`. -== 3.2.27 +=== 3.2.27 * [bug] Paths should not be individually iterated (Happened with Bolt transport and `PATH_LOAD_STRATEGY`). -== 3.2.26 +=== 3.2.26 * [new-feature] Add support for read-only-properties. (#786) * [tests] Demonstrate correct equals/hashCode for `@RelationshipEntity`. (#868) @@ -130,13 +140,13 @@ PR to remove the overly large locks in `ClassInfo`. * [bug] Use `EnterpriseGraphDatabaseFactory` if available. (#883) * [improvement] Add Java modules names for native types. -== 3.2.25 +=== 3.2.25 * [bug] Fix possible `NullpointerException`. (#880) * [bug] Use a more unique bookmark separator. (#882) * [dependencies] Upgrade Neo4j 3.5 to 3.5.29. -== 3.2.24 +=== 3.2.24 * [dependencies] Update Neo4j Java driver to 4.0.3. * [dependencies] Upgrade Http Core to 4.4.14. @@ -144,32 +154,32 @@ PR to remove the overly large locks in `ClassInfo`. * [improvement] Ensure compatibility with Neo4j 4.3 (only applicable for the Bolt transport when using a 4.1+ driver). * [bug] Properly default to OUTGOING relationship. -== 3.2.23 +=== 3.2.23 * [improvement] Avoid using LinkedList in MappingContext. * [bug] Use all available types when retrieving polymorphic mapped relationships. (#875) * [dependencies] Upgrade Neo4j 3.5 to 3.5.28. -== 3.2.22 +=== 3.2.22 * [bug] Check if properties belong to the same entity but different relationships. (#851) * [improvement] Support `@Properties`-annotated fields in custom query results via SingleUseEntityMapper. (#873) * [dependencies] Upgrade Neo4j 3.5 to 3.5.27. -== 3.2.21 +=== 3.2.21 * [bug] Close Driver if verifyConnectivity fails to avoid resource leak. (#869) -== 3.2.20 +=== 3.2.20 * [improvement] Make OGM aware of org.springframework.data.annotation.Transient. (#866) * [dependencies] Upgrade Neo4j 3.5 to 3.5.26. -== 3.2.19 +=== 3.2.19 * [improvement] Add shims for GraalVM native image. (#863) -== 3.2.18 +=== 3.2.18 * [bug] Make consistent use of mayBeReadWrite for deciding to clear the session or not. (#860) * [improvement] Cache field information for relationship fields. (#849) @@ -180,12 +190,12 @@ PR to remove the overly large locks in `ClassInfo`. * [dependencies] Update JUnit to 4.13.1. * [dependencies] Upgrade Neo4j 3.5 to 3.5.23. -== 3.2.17 +=== 3.2.17 * [bug] Fix determination of target graph property type. (#846) * [improvement] Log query notifications in Bolt transport. (#847) -== 3.2.16 +=== 3.2.16 * [bug] Convert collection based parameters for filters individually. (#829) * [bug] Avoid early population of externally generated ID fields. (#831) @@ -196,21 +206,21 @@ PR to remove the overly large locks in `ClassInfo`. * [improvement] Change log level to debug for message about potentially write queries. * [new-feature] Check for a read only query hint. (#839) -== 3.2.15 +=== 3.2.15 * [bug] Ensure accessibility of annotation values. (#827) * [bug] Unify nested query building for relationship centric queries. (#825) * [bug] Solve ambiguous class name collision. (#809) * [improvement] Flatten result lists as late as possible. (#826) -* [improvement] Flush mapping context on potentially write queries, buth custom and generic. (#818) +* [improvement] Flush mapping context on potentially write queries, both custom and generic. (#818) * [tests] Add an example for Kotlins inline classes. (#823) * [tests] Prove that nested adhoc mapping from maps work. (#814) -== 3.2.14 +=== 3.2.14 * Relationships incoming from an inheritance tree are not deleted. (#806) -== 3.2.13 +=== 3.2.13 * GH-799, GH-800: Improve nested filtering: Nested filters will now always collapse when they target the same leaf node. This allows for using logical `OR` inside nested filters. We also make sure that in all scenarios, in which semantically wrong Cypher would be created, an `UnsupportedOperationException` is thrown, regardless if one tries to combined `NestedFilterOrOtherFilter` or `OtherFilterOrNestedFilter`. This may affect some derived finder methods in Spring Data Neo4j. * GH-803: Introduce some heuristics for mapping result lists to generic fields whose types have been erased. @@ -218,12 +228,12 @@ PR to remove the overly large locks in `ClassInfo`. ** Neo4j 3.4.18 and 3.5.19 ** Neo4j Java Driver 4.0.2 -== 3.2.12 +=== 3.2.12 * GH-793 - Fix reading of Neo4j literal byte[] arrays. * Prepare tests for Neo4j 4.1 -== 3.2.11 +=== 3.2.11 * Update ClassGraph to 4.8.72. * Upgrade Neo4j 3.5 to 3.5.17. @@ -234,7 +244,7 @@ PR to remove the overly large locks in `ClassInfo`. * Use converter for id based loading. (#787) * Treat composite keys correct during load and save operations. (#790) -== 3.2.10 +=== 3.2.10 * Update Java Driver to 4.0.1. * Update Neo4j 3.5 to 3.5.16. @@ -242,7 +252,7 @@ PR to remove the overly large locks in `ClassInfo`. * IgnoreCase filter support for starts/ends with. * Kotlin support: Add String.asParam(). (#769) -== 3.2.9 +=== 3.2.9 * Update to latest version of HttpClient and Core. (#754) * Ignore existing full text indexes when using the auto index manager. (#760) @@ -253,27 +263,27 @@ PR to remove the overly large locks in `ClassInfo`. * Explicitly use ISO based date- and timeformatters. (#768) WARNING: The Kotlin extension methods `Session.load(id: Serializable, depth: Int = 1)`, - `Session.queryForObject(cypher: String, parameters: Map = emptyMap())` and - `SessionFactory.unwrap()` now return nullable references to be compatible with the actual - Java methods. This is a breaking change but avoids `IllegalStateException` during runtime. - Please see #765 for a discussion. - `Driver.unwrap()` will no return `null` as long as the driver hasn't been used or has not been - initialised through `verifyConnection(true)` on the configuration. +`Session.queryForObject(cypher: String, parameters: Map = emptyMap())` and +`SessionFactory.unwrap()` now return nullable references to be compatible with the actual +Java methods. This is a breaking change but avoids `IllegalStateException` during runtime. +Please see #765 for a discussion. +`Driver.unwrap()` will no return `null` as long as the driver hasn't been used or has not been +initialised through `verifyConnection(true)` on the configuration. Thanks to our reporters and contributors @emptyfruit, @aslakagens and @TWiStErRob and also @lukehutch for your input. -== 3.2.8 +=== 3.2.8 -* Add explicit support for AttributeConverter used in Spring Data - `@QueryResult`-classes in SingleEntityMapper. (#752) +* Add explicit support for AttributeConverter used in Spring Data +`@QueryResult`-classes in SingleEntityMapper. (#752) -== 3.2.7 +=== 3.2.7 * Return relationship and nodes with unknown relationship types. (#737) * Fix optimistic locking for relationship entities. (#746) * Fix return type for known entity classes in case of an empty result. (#748) -== 3.2.6 +=== 3.2.6 * Improve performance of fully qualified class name lookup. (#738) * Make OGM more resilient against scanning the root package. (#686) @@ -281,13 +291,13 @@ Thanks to our reporters and contributors @emptyfruit, @aslakagens and @TWiStErRo * Avoid possible NPEs with bad domain model. (#741) * Make database configurable. (#744) -== 3.2.5 +=== 3.2.5 * Return unmapped relationship models. (#727) * Don't rely on simple class names for entity mapping. (#726) * Improve class loading mechanism. (#729, #728) -== 3.2.4 +=== 3.2.4 * Pass depth parameter correctly from Kotlin session extension. (#724) * Upgrade Java driver to 4.0.0. (#720) @@ -298,10 +308,10 @@ Thanks to our reporters and contributors @emptyfruit, @aslakagens and @TWiStErRo * Verify update of relationship entities. (#607) * Use fully qualified name to find class info. (#552) * Make SingleUseEntityMapper aware of nested objects - and Ensure that id fields are mapped correctly during adhoc mapping. (#551) +and Ensure that id fields are mapped correctly during adhoc mapping. (#551) * Fix lookup of inner, static classes. (#391) -== 3.2.3 +=== 3.2.3 * Update Java driver to latest 4.0.0-rc1 release. (#699) * Optimize scanning and storage of Node- and RelationshipEntities. (#678) @@ -316,22 +326,22 @@ Thanks to our reporters and contributors @emptyfruit, @aslakagens and @TWiStErRo * Upgrade Neo4j 3.5 to 3.5.13. * Upgrade Neo4j 3.4 to 3.4.17. -== 3.2.2 +=== 3.2.2 * MappingException in Session.queryForObject when actualType extends objectType. (#671) -== 3.2.1 +=== 3.2.1 * Fix API compatibility issues with Spring Data Neo4j 5.1.x series. -== 3.2.0 +=== 3.2.0 * Removed "neo4j.ha.properties.file" property from OGM configuration. Use "neo4j.conf.location" instead. * Removed `org.neo4j.ogm.autoindex.AutoIndexManager#build`. Use `org.neo4j.ogm.autoindex.AutoIndexManager#run` instead. * Removed deprecated and unsupported method `org.neo4j.ogm.session.Neo4jSession#setDriver`. * Removed deprecated `@GraphId`. Please use a `Long` field annotated with `@Id @GeneratedValue` instead. * Removed deprecated `org.neo4j.ogm.session.Session.doInTransaction(GraphCallback)`. SDN doesn't use that from 5.1.4 - upwards anymore. +upwards anymore. * Allow configuration of packages to scan in `ogm.properties` through `base-packages`. (#131) * Removed deprecated and unused ServiceNotFoundException for good this time. (#319) * Removed deprecated `org.neo4j.ogm.session.Neo4jException`. (#319) @@ -342,7 +352,7 @@ Thanks to our reporters and contributors @emptyfruit, @aslakagens and @TWiStErRo * Deprecated OgmPluginInitializer. * Don't deploy `org.neo4j:neo4j-ogm-test` any longer. This module and the included utilities is not meant to be used outside Neo4j-OGM. * `SessionFactory.getDriver()` has been replaced with `SessionFactory.unwrap(Class clazz)` which provides a consistent - way to get the underlying Neo4j-OGM driver or the native driver. +way to get the underlying Neo4j-OGM driver or the native driver. * Wrap CypherModificationProvider in a ThreadLocal. * Add support for containing filter in combination with ignore case. * Provide transformEnumKeysWith on @Properties. (#634) @@ -355,3 +365,594 @@ Thanks to our reporters and contributors @emptyfruit, @aslakagens and @TWiStErRo * Improve support for Kotlin data classes. (#653) * Update Java driver to latest 4.0.0-beta02 release. * Add some useful Kotlin extensions to Session. (#661) + +== 3.1 + +=== 3.1.22 + +* [bug] Convert collection based parameters for filters individually. (#829) +* [bug] Avoid early population of externally generated ID fields. (#831) +* [improvement] Update Neo4j 3.5 to 3.5.21. +* [improvement] Precompute hashCode of MappedRelationship. (#838) +* [improvement] Compile pattern in case-insensitive mode. (#840) +* [new-feature] Check for a read only query hint. (#839) + +=== 3.1.21 + +* [bug] Ensure accessibility of annotation values. (#827) +* [bug] Solve ambiguous class name collision. (#809) +* [improvement] Flush mapping context on potentially write queries, both custom and generic. (#818) +* [tests] Prove that nested adhoc mapping from maps work. (#814) + +=== 3.1.20 + +* Relationships incoming from an inheritance tree are not deleted. (#806) + +=== 3.1.19 + +* Fix return type for known entity classes in case of an empty result. (Backport of #748) + +=== 3.1.18 + +* Update Neo4j 3.5 to 3.5.16. +* IgnoreCase filter support for starts/ends with. + +=== 3.1.17 + +* Recursively traverse variable length relationship patterns. (#718) +* Do not rely on simple class names. (#726) +* Improve computation of id fields in ClassInfo. (#729) +* Add tests to ensure correct mapping of pattern comprehension based queries. (#737) +* Improve performance of fully qualified class name lookup. (#738) +* Fix optimistic locking for relationship entities. (#747) +* Use latest versions of HttpClient and Core. (#754) +* Select correct string converter. (#761) +* Explicitly use ISO based date- and timeformatters. (#768) + +=== 3.1.16 + +* Check for contradicting annotations before mapping possible related nodes. (#666) +* Ensure that id fields are mapped correctly during ad-hoc mapping. (#551) +* Fix lookup of inner, static classes. (#391) +* Fix inconsistent behavior when querying parent classes. (#670) +* Use all mapped labels when querying domain objects. (#651) +* Use fully qualified name to find class info. (#552) +* Update FastClasspathScanner to latest 2.x series for OGM 3.1. (#708) +* Make SingleUseEntityMapper aware of nested objects. (#551) +* Improve building of class hierarchies. (#704) +* Fix detection of generic 1:1 relationships. (#706) +* Fix deletion of bidirectional, undirected relationships. (#657) +* Optimize CypherContext::isAlreadyDeleted. (#668) + +=== 3.1.15 + +* Fix invalid conversion of native types on embedded inside maps with when the experimental option +`org.neo4j.ogm.driver.ParameterConversionMode.CONFIG_PARAMETER_CONVERSION_MODE` introduced in 3.1.4 is set +to `CONVERT_NON_NATIVE_ONLY` (#665) + +=== 3.1.14 + +* Fix inconsistent usage of optimistic locking properties. + +=== 3.1.13 + +* Correctly discover and handle typed and parameterized fields. (#656) +* Fix deletion of relationship entities with optimistic locking. +* Improve support for Kotlin data classes. (#653) + +=== 3.1.12 + +* Verify sort order. (#368) +* Make sure all kinds of enums are correctly identified. (#643) +* Store visited nodes under their native graph id if possible. (#640) +* Fix merging of collections. (#641) +* Use name() for enum keys in both writing and reading of dynamic properties. (#632) +* Deprecate constructor without native type checking. (#630) +* Fix concurrency problem in entity cache. + +=== 3.1.11 + +* Apply optimistic locking logic during merge, too. (#623) +* Turn off client side Cypher validation, request TX type as needed. (#627) +* Upgrade to Jackson 2.9.9. (#628) +* Upgrade Neo4j 3.5 to 3.5.6. + +=== 3.1.10 + +* Provide hooks to configure native Bolt driver logging. + +=== 3.1.9 + +* Fix determination of visited nodes. (#609) +* Prepare additionally loaded superclasses as well. (#619) +* Upgrade Neo4j 3.5 to 3.5.5. +* Upgrade Neo4j 3.4 to 3.4.13. +* Upgrade Neo4j 3.2 to 3.2.14. +* Remove temporary class. +* Upgrade docbook plugin to alpha10 +* Upgrade Checkstyle Maven plugin. + +=== 3.1.8 + +* Fix bug in optimistic locking with Neo4j 3.5.3. +* Fix bug in transaction management and bookmark functionality. +* Support single uri in uris properties. #605 +* Stabilize CypherModificationProvider for threading. + +=== 3.1.7 +* Fix bug when index fields contain camelCase properties. +* Fix initialization of Cypher modification. #595 + +=== 3.1.6 + +* Improve documentation of type conversions. #501 +* Provide "neo4j.conf.location" in OGM configuration, pointing to a custom configuration file (url or classpath resource) +that allows to configure the embedded Neo4j instance. #408 +* Deprecate "neo4j.ha.properties.file" as configuration property of OGM. It will be removed in 3.2. To use an embedded +HA instance, provide a neo4j.conf file through OGM property "neo4j.conf.location" specifying the DBMS mode "HA" like +this: dbms.mode=HA. +* Fix update of labels depending on the session in which an entity was loaded. (#488) +* Allow configuration of embedded database through file specified in `ogm.properties` under `neo4j.conf.location`. (#408) +* Improve documentation of attribute conversions. (#501) +* Don't rely on system encoding. +* Constraint violations are now handled consistent across drivers. (#301) +* Deprecated `org.neo4j.ogm.session.Neo4jException`, will be removed in 3.2. (#319) +* Deprecated `org.neo4j.ogm.exception.core.NotFoundException`, will be removed in 3.2. (#319) +* Deprecated `org.neo4j.ogm.exception.core.ResultErrorsException`, will be removed in 3.2. (#319) +* Fixed detection of field types in concrete subclasses of generic base classes. (#492) +* Changes to dynamic properties (map attributes) are now correctly tracked. (#518) +* Fixed possible class cast exceptions while sending domain events for iterables. (#473) +* Fixed deletion of relationships with the same type between the same nodes. (#576) + +=== 3.1.5 + +* Fix loading by parent class / interface for custom id. (#554) +* Fix computation of keys for primaryIdToNativeId mapping. +* Fix usage of fixed variable name. +* Remove methods that had been scheduled for removal in 3.1.4. +* Remove dependency on commons-io. + +=== 3.1.4 + +* Don't treat Void and void as scalar result types and thus allowing Neo4j-OGM session to handle queries mapped to these +types even if the query itself does return nodes or properties. #479 +* Fix a bug during detection of interface-hierarchies that prohibited the use of generics as target attributes for start +and end nodes of a relationship. #491 +* Fix a bug during recognition of type variables in generic classes or interfaces used as target attributes for +relationships. #528 +* Improve logging of Cypher statements and their parameters: To have less clutter in the log, only log to DEBUG. If you +rely on the old behavior, enable DEBUG log on the request type in question +(org.neo4j.ogm.drivers.bolt.request.BoltRequest, org.neo4j.ogm.drivers.embedded.request.EmbeddedRequest or +org.neo4j.ogm.drivers.http.request.HttpRequest). #530 +* Introduce an experimental configuration option to use native types in parameter conversion +for both Bolt- and Embedded-Transports. + +=== 3.1.3 + +* Improve determination of labels in class hierarchy scenarios. Labels are now computed according to docs, the names of +abstract classes are now considered as labels as long as the class contributes to the index. If a hierarchy lead to a +situation where multiple different labels can be applied, the topmost one is used. #437 +* Don't run the auto index manager if auto index mode is NONE (prevents eagerly opening a session). #437 +* Deprecate #getIndexes and #build in AutoIndexManager. #437 +* Convert array correct in delete operations. #509 +* Treat @PostLoad methods the same way as JSR-250 treats @PostConstruct. #516 +* Recognize overwritten @PostLoad methods in a class hierarchy. #414, #516 +* Deprecate default constructor and mutating put-method in ObjectAnnotations. +* Prevent possible accidental deletion of all nodes when no label can be determined. + +=== 3.1.2 + +* Improve documentation. +* Resurrected ServiceNotFoundException for SDN Kay compatibility. + +=== 3.1.1 + +* Fix determination of FieldInfo. +* Use type converters for scalar queries. #71 +* Remove deprecated and unused ServiceNotFoundException. + +=== 3.1.1-RC1 + +* Upgrade FastClasspathScanner to latest version. #474 +* SortOrder API polishing. #483 +* Make SortOrder reusable. #486 +* (Deeper) Nested properties filter support. +* Provide a case-insensitive equals comparison. +* NodeEntity label, Relationship and RelationshipEntity type can be set without attribute name in annotation. #377 + +=== 3.1.0 + +* Manually assigned conversion annotations should support lenient mode. #424 +* Improve setting of BooleanOperator parameter in Filter. #445 +* Update Neo4j java driver version to 1.5.0 +* Update Neo4j version to 3.3.1 in 3.3 profile +* Update Neo4j version to 3.4.0-alpha04 in 3.4 profile +* Report QueryStatistics correctly. #449 +* Support for composite index, node key constraints, existence constraints #439 +* Improve java 9 compatibility by adding an automatic module name #460 +* Refactor transaction handling +* Add optimistic locking #450 +* Add entity instantiation callback mechanism. #448 + +== 3.0 + +=== 3.0.5 + +* Test against Neo4j 3.4.11 +* Don't rely on system encoding nor UTF-8 string literals +* Upgrade Jackson to 2.8.11 + +=== 3.0.4 + +* HttpDriver: Handle non-json response gracefully. +* Default Java driver dependency for Bolt is 1.5. +* Compatibility for 3.4 point types in DistanceComparison. +* NodeEntity label, Relationship and RelationshipEntity type can be set without attribute name in annotation. #377 +* SortOrder is now re-usable. #486 +* Report QueryStatistics correctly. #449 + +=== 3.0.2 + +* Entity count returns incorrect result on abstract non-annotated type. #435 +* Fix classpath scanning issue with Play framework. #429 +* Store horizon along with visited nodes to traverse to correct depth. #407 +* Fix mapping of directed transient relationships defined in both directions +* Fix directory creation for embedded driver. #411 +* Update Neo4j to version 3.4.0-alpha02 in 3.4 profile +* Update java driver version to 1.4.5 in 1.4 profile (default dependency) +* Update java driver version to 1.5.0-beta02 in 1.4 profile + +=== 3.0.1 + +* Add filter function for in-collection query. #423 +* Update Neo4j to version 3.1.7 in 3.1 profile +* Update Neo4j to version 3.2.6 in 3.2 profile (default dependency) +* Update Neo4j to version 3.3.0-rc1 in 3.3 profile +* Update java driver version to 1.4.4 in 1.4 profile (default dependency) +* Update java driver version to 1.5.0-alpha02 in 1.5 profile +* Fix classpath scanning issue on JBoss/Wildfly with jar in ear #420 +* Java 9 compatibility (Rename exception package for core module) #416 +* Deprecate @GraphId annotation #417 +* Minor documentation fixes + +=== 3.0.0 + +* Check if node is in MappingContext before firing events, fixes #305 +* Don't consider Object fields with @StartNode and @EndNode as property, fixes #66 +* Update Neo4j to version 3.1.6 in 3.1 profile +* Update Neo4j to version 3.2.3 in 3.2 profile +* Update Neo4j to version 3.3.0-alpha05 in 3.3 profile +* Update java driver version to 1.4.3 +* Test against java driver 1.5-alpha1 in driver-1.5 profile +* Don't merge collection property default value with graph value +* Lookup by Long primary id returns correct instance when conflicts with other graph id (DATAGRAPH-1008) +* Generate correct statements for entities with label field +* Fix creation of relationship entities with identical properties +* Add @Id to relationship entities +* Remove requirement to have graph id in entities +* Execute @PostLoad method after fully hydrating all entities, fixes #403 +* Fix execution of @PostLoad method when entities are loaded via session.query() +* Fix duplicate nodes creation when using Session.save(Iterable) +* Expose new URIS configuration parameter for clustering +* Username and password are not picked from configuration file +* Use UNWIND pattern when updating relationships +* Paging with session.loadAll(User.class, filter, pagination) does not work correctly when filtering on relationship #384 +* Assert indexes for labels with hyphens fails #392 +* Remove dependency on common collections +* Keep order for loadAll by objects or ids, fixes #196 +* Fix issue with empty (non null) collections, fixes #388 +* Update documentation + +=== 3.0.0-RC1 + +* Add verifyConnection configuration property for bolt and http driver +* Support Neo4j version 3.3.0-alpha3 in 3.3 profile +* Add default conversions for LocalDateTime and OffsetDateTime +* Implement query load strategies based on schema defined by entities +* Update Neo4j to version 3.1.5 in 3.1 profile +* Update Neo4j to version 3.2.2 in 3.2 profile +* Change graph id handling for new entities, fix #381 + +=== 3.0.0-M02 + +* Session.loadAll(Class type, Collection ids) doesn't treat ids as primaryKeys but as nodeIDs. #349 +* Add native support for java.time.Instant and java.time.Instant. Fixes #348 +* Do not throw NPE when entity field is not a managed type. #347 +* Handle default platform encoding other than UTF-8. #244 +* Upgrade Neoj4 Java Driver to 1.4.0 +* Fix MappingException when querying object with List using Embedded. #359 +* Expose connection liveness driver parameter. #358 +* Support Neo4j 3.2.1 +* Allow use of CompositeConverter on fields in @RelationshipEntity classes +* New feature: @Properties - dynamically map node properties +* Relationships with same endNode load correctly. #361 +* Provide way to inject dependencies to drivers directly through constructors +* New feature: OgmPluginInitializer for easy use of OGM in unmanaged extension +* Add new API to provide multiple bookmarks at transaction begin +* New feature: @Id generation through strategy specified by @GenerationValue +* Removed DriverManager class + +=== 3.0.0-M01 + +* Primary index annotations are picked up on the whole class class hierarchy, not only on leaf class. Fixes #332. +* Support Neo4j 3.1.2 +* Fixes issue where the X-Write header is wrong on read-only transactions first request. Fixes #323. +* Improve test infrastructure. Test servers are now reused when possible. +* Exclude slf4j-nop from transitive dependencies. +* Improve identity handling and allow custom id generation (introduce new annotations @Id and @Generated). #344. +* Performance improvements when loading large number of relationships. #327. +* Use fast-classpath-scanner to read mapping metadata. #327. +* Look for primary indexes on class hierarchy and not only on leaf class. Fixes #332. +* Removed username/password from logging. Fixes #330. +* Improve the way configuration works. #346. +* Filters are now immutable. #345. + +== 2.1 + +=== 2.1.5 + +* Expose connection.liveness.check.timeout driver property to fix connection problems with firewalls. See #358. +* Map relationship entities without any properties +* Return correct results when paging and filtering on relationship property + +=== 2.1.4 + +* Allow use of CompositeConverter on fields in @RelationshipEntity classes +* Allow passing custom driver instance to BoltDriver for custom driver configuration +* Improve lookup of relationship fields of same type, fixes #361 +* Improve performance for saving large number of new relationships in one save request +* Update Neo4j to version 3.0.11 in 3.0 profile +* Update Neo4j to version 3.1.6 in 3.1 profile +* Change graph id handling for new entities, fix #381 +* Check if node is in MappingContext before firing events, fixes #305 +* Fix mapping of @Relationship with default direction +* Don't merge collection property default value with graph value +* Fix issue with empty (non null) collections, #388 + +=== 2.1.3 + +* Session.loadAll(Class type, Collection ids) doesn't treat ids as primaryKeys but as nodeIDs. #349 +* Do not thow NPE when entity field is not a managed type. #347 +* Fix MappingException when querying object with List using Embedded. #359 +* Handle default platform encoding other than UTF-8. #244 +* Default Bolt Driver dependency is now 1.2.3 +* Session::load(type, id) should support types in its queries or provide a typed interface #365 +* Avoid session leaks in some rollback scenarios #364 +* Incoming relationship does not get deleted with clear session #357 +* Avoid too verbose logging on classpath scanning +* Do not show password on ConnectionException. #337 +* Minor performance improvements. #327 + + +=== 2.1.2 + +* Fixes issue where the X-Write header is wrong on read-only transactions first request. Fixes #323. +* Primary index annotations are picked up on the whole class class hierarchy, not only on leaf class. Fixes #332. +* Support Neo4j 3.1.2 +* Performance improvement when saving lots of nodes and relationships in the same transaction. +* Ensure RelationshipEntities not referenced by NodeEntities can be loaded. Fixes #309. +* Documentation improvements. + + +=== 2.1.1 + +* Fixes issue where session.loadAll would sort by ids instead of by the sort order specified. Fixes #302. +* Completely updated documentation. +* Fix for @Index not working properly with @Property. Resolves #312. +* ClassInfo.addIndexes() now uses MetaDataClassLoader.loadClass() to fix issue in Play 2.5. Resolves #314. +* Made Index validation comparison ignore whitespace. +* Bump Neo4j version to 3.0.8. +* Ensure polymorphic relationship entity references can be correctly resolved at runtime. Fixes #298. +* Fix issue where no neo4j dependencies causes embedded driver to silently fail. +* Removed requirement for embedded driver to always download neo4j dependencies. +* Session.loadAll() sorts by SortOrder specified instead of by Ids. Fixes #302. +* Fix commit/rollback X-WRITE headers not being sent to correct node in HTTP Driver. + +=== 2.1.0 + +* Support for Neo4j 3.1 Causal Clustering. +* Support for Neo4j Bolt Driver 1.1.0. +* Add SessionFactory method to register/deregister event listeners (#297). Closes #296. +* Embedded driver temporary file store is now automatically deleted (#293). Fixes #288. +* All method signatures using an ID in Session now use generics to support non Long types. +* Prevent DriverExceptionTest hanging under Java 7. See #258. +* Support for lookup & merge via primary index. (#281) +* Interim fix to PagingAndSortingQuery + + +=== 2.1.0-M01 + +* Added support for spatial queries, composite attribute converters and Filter functions. +* Scala compatibility - support for @Labels without get/set. Fixes #236. +* Fixes failure to set Credentials when using Bolt protocol in URI. Fixes #235. +* Enable ClassPathScanner to scan embedded WAR/JAR files (Spring Boot, Tomcat, etc). +* Fix defects when mapping to and from fields and methods that use Generics. Fixes #186. +* Support for Indexes and Constraints. Fixes #243. +* Fix issue where calling session.save() after updating graph properties and relationships in one transaction did not save properties. Fixes #261. +* Enable support for High Availability in Embedded driver. Fixes #142. +* Don't ship neo dependencies with the OGM (#278). +* Additional comparison operators for Filters. +* Support querying by multiple relationship entities. Fixes #280. +* Added ability to load a sessionFactory without classpath scanning. + +== 2.0 + +=== 2.0.8 + +* HttpDriver: Handle non-json response gracefully. + +=== 2.0.7 + +* Fixes issue where session.loadAll would sort by ids instead of by the sort order specified. Fixes #302. +* Expose connection.liveness.check.timeout driver property to fix connection problems with firewalls. See #358. + +=== 2.0.6 + +* Support for Neo4j Bolt Driver 1.0.6 +* Scala compatibility - support for @Labels without get/set. Fixes #236. +* Fixes failure to set Credentials when using Bolt protocol in URI. Fixes #235. +* Enable ClassPathScanner to scan embedded WAR/JAR files (Spring Boot, Tomcat, etc). +* Fix defects when mapping to and from fields and methods that use Generics. Fixes #186. +* Fix issue where calling session.save() after updating graph properties and relationships in one transaction did not save properties. Fixes #261. +* Fix X-WRITE headers not being sent to correct node in HA HTTP. +* Upgrade dependency to Neo4j 3.0.7 + +=== 2.0.5 + +* Support scanning web archives for domain classes. Fixes #211. +* Support non-string annotation element types. Fixes #228 +* Fixes issue where relationship entities were counted incorrectly. +* Correct rollback problem with RelationshipEntities. Fixes #351. +* Support read-only transactions. +* Fix Concurrent Modification Exception when save is followed deleteAll +* Refactor classes from neo4j-ogm-core org.neo4j.ogm.annotations to org.neo4j.ogm.entity.io +* Fixes an issue #209, where removal of labels fails in certain cases. +* Deprecate @Labels annotation in the org.neo4j.ogm.annotations package. It has been moved to org.neo4j.ogm.annotation +* Support for Neo4j Bolt Driver 1.0.5 + + +=== 2.0.4 + +* Adds support for event listeners +* Support for an @Labels annotation that allows dynamically applying/removing labels for an entity at runtime. +* Fixes issue where SortOrder did not take into account the actual node property name specified by @Property +* Fixes issue where properties of the node were updated if it was reloaded after having been already mapped in the session + +=== 2.0.3 + +* Corrects behaviour of dirty checks on load and save +* Fixes issue where converters that use generics and convert to collections or arrays throw ClassNotFoundExceptions +* Fixes issue where the embedded driver would create a directory that included the uri scheme +* Fixes issue where ClassInfo to be accessed concurrently with some fields not having been initialised. + +=== 2.0.2 + +* Fixes issue where collections of relationships were not loaded correctly when they share the same relationship type but different target entities +* Fixes issue where enums not scanned were not assigned default converters +* Fixes issue where session.query() would not map String[] properties to Collection on a domain entity +* Performance improvements for the graph to entity mapping process +* Provide support for detaching/clearing individual node and relationship entities from the session +* Fixes issue where a collection of Longs in a entity was mapped as a collection of Integers +* Fixes issue where collection of values returned via a custom Cypher query sometimes mapped to an ArrayList. Now it consistently maps to an array. +* Fixes issue where a node without a label or labels not mapped in the OGM result in a NullPointerException when queried via a custom Cypher query +* Support for Neo4j 3.0.0 and the Bolt Java Driver 1.0 + +=== 2.0.1 + +* Initial support for the Bolt Driver and Neo4j 3.0 M5 +* Fixes around configuration being autocloseable, TransactionManager issues, +* ConnectionException thrown instead of ResultProcessingException when a connection could not be obtained to Neo4j + +=== 2.0.0-M4 + +* Fixes issue where an updating an entity with a null property did not remove the property and the original value was retained +* Fixes issue where a char[] and boxed primitive array (embedded driver only) properties on a node could not be mapped to the entity + +=== 2.0.0-M3 + +* Fixes issue where an array property of an entity would not be saved to the graph correctly if the contents of the array were modified. +* Provides support for handling non-standard resource protocols like 'vfs:' +* Improvements and bug fixes to http connection handling and connection pooling +* The reason for a Cypher statement or query failing is made available and is consistent across drivers. org.neo4j.ogm.exception.CypherException contains the error code and message. +* Drivers extracted into separate modules and dependencies +* Fixes issue where incoming relationships not navigable in the other direction could not be deleted +* Each driver moved to a separate module +* Fixes issue where a user managed transaction would be committed when saving an entity that required multiple Cypher requests +* Fixes issue where an undirected relationship was sometimes not deleted correctly + +=== 2.0.0-M2 + +* Fixes issue where the number of entities returned in a page is incorrect if related entities of the same type are mapped +* Fixes issue where the result of loading relationship entities with a custom load depth was incorrect. Furthermore, default load depth 1 for a relationship entity will now correctly load it's start and end nodes to depth 1. +* Support for collections of entities of type SortedSet, backed by a TreeSet +* A missing type attribute on a @RelationshipEntity will now result in a compile time error +* Fixes issue where registering an entity type and purging entities from the session were dependent on the equals() implementation of the entity +* Fixes issue where literal maps returned in custom cypher queries could not be parsed +* Fixes issue where saving a collection of entities would save each entity in a separate request and transaction. After this fix, they will be saved in the same transaction, with as few requests as possible + +=== 2.0.0-M1 + +* Support mapping of custom query results to domain entities +* Upgrade to Neo4j 2.3.2 +* Retry http requests in the event of NoHttpResponseException +* Converters using parametrized types now work correctly +* Fixes http-client connection leak when request returns a 300/400/500 response code +* Performance improvements when +- creating, updating and deleting nodes +- creating, updating and deleting relationships and relationship entities +* All create, update and delete Cypher queries are cacheable +* Detect use of wildcards on generics and fail with appropriate message +* Support for Neo4j Embedded +* Split into modules for drivers, api, core, compiler and test + +== 1.1 + +=== 1.1.6 + +* Fixes issue where an array property of an entity would not be saved to the graph correctly if the contents of the array were modified. +* Fixes issue where org.neo4j.ogm.json.JSONException: Unterminated string was thrown with premature closing of the response +* Improvements and bug fixes to http connection handling and connection pooling +* The reason for a Cypher statement or query failing is made available and is consistent across drivers. org.neo4j.ogm.session.result.CypherException contains the error code and message. +* Fixes issue where incoming relationships not navigable in the other direction could not be deleted +* Fixes issue where an undirected relationship was sometimes not deleted correctly + +=== 1.1.5 + +* Support for collections of entities of type SortedSet, backed by a TreeSet +* Fixes issue where registering an entity type and purging entities from the session were dependent on the equals() implementation of the entity +* Upgrade to Neo4j 2.3.2 +* Retry http requests in the event of NoHttpResponseException +* Converters using parametrized types now work correctly +* Fixes http-client connection leak when request returns a 300/400/500 response code + +=== 1.1.4 + +* Fixes issue where the relationship type specified via an annotation on an iterable setter was ignored if the parameter type matched +* Fixes issue where long transaction times out and results in application hanging +* Fixes issue where loadAll was dependent on the entities implementation of equals() +* Throw MissingOperatorException when BooleanOperators are not specified in any filters except the first +* Fixes an issue where LoadByIdsDelegate returned more than the collection of requested ids +* Allows saving a relationship entity directly even when there is no reference from the relationship entity to the start node +* Fixes issue where integers returned by queries were not converted correctly to numeric wrapper classes like Float +* Fixes issue where @DateLong could not handle dates with values < INTEGER.MAX_VALUE +* Fixes relationship mapping issue when one-sided singleton relationships are reloaded after session clear +* Added support for case-insensitive, wildcard-based LIKE queries via filters +* Fixes null pointer exceptions when nulls are sent as parameters and returned from custom queries + +=== 1.1.3 + +* Fixes issue when entity identity was based on equals/hashcode when traversing object graph +* Performance improvements when +- updating existing relationships by id +- creating new relationships between already persisted nodes. Does not apply to relationship entities. +* Fixes an issue with the mapping context where node entities are deregistered, but not referenced relationship entities +* Fixes issue when type descriptors are defined on interfaces +* Fixes metadata label resolution with certain class hierarchies + +=== 1.1.2 + +* Improvements to class loading mechanism to support Play framework +* Fixes mapping issue when an entity contains relationships as well as relationship entities of the same type +* Support for Neo4j 2.2.5 + +=== 1.1.1 + +* Support for self relationships (loops) +* Fixes around mapping of relationships and relationship entities when the relationship type is the same +* Fixed NullPointerException thrown from TransientRelationship.convert +* Fixed relationships being lost upon re-save +* Performance improvements +* Deprecated Session.execute() in favour of Session.query() allowing both queries and modifying statements, +with the ability to return query results as well as query statistics. + +=== 1.1.0 + +* Plain Object Graph Mapper +- support for CRUD persistence of Node- and Relationship-Entities +- new set of mapping annotations +- configurable fetch and store - depth +- fast class scanner for metadata +- annotation free mapping +- property conversion handling +* Label based type representation +* Query sorting and paging support diff --git a/README.adoc b/README.adoc index 314abc35b..09139cc13 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,4 @@ -:version: 3.2.42 +:version: 3.3.0 image:https://img.shields.io/maven-central/v/org.neo4j/neo4j-ogm.svg[Maven Central,link=http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.neo4j%22%20AND%20a%3A%22neo4j-ogm%22] image:https://rawgit.com/aleen42/badges/master/src/slack.svg[Slack,link=https://neo4j-users.slack.com/messages/neo4j-sdn-ogm/] diff --git a/neo4j-ogm-docs/antora.yml b/neo4j-ogm-docs/antora.yml index 97bbfc3e1..cfbbd1bc9 100644 --- a/neo4j-ogm-docs/antora.yml +++ b/neo4j-ogm-docs/antora.yml @@ -1,13 +1,13 @@ name: ogm-manual title: OGM Library -version: '3.2' +version: '3.3' start_page: ROOT:index.adoc nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '4.1' - neo4j-version-exact: '4.1.10' + neo4j-version: '3.5' + neo4j-version-exact: '3.5.35' neo4j-buildnumber: '4.1' - ogm-version: '3.2.42' - ogm-doc-version: '3.2' + ogm-version: '3.3.0' + ogm-doc-version: '3.3'