Skip to content

Latest commit

 

History

History
955 lines (734 loc) · 43.2 KB

CHANGES.adoc

File metadata and controls

955 lines (734 loc) · 43.2 KB

Changes

4.0

4.0.1

  • Fix support for collections in constructor mapping.

  • Allow for classes to be registered dynamically with DomainInfo.

  • Check both index and classpath for known entities.

  • Introduce equals/hashCode for Class/FieldInfo.

  • [dependencies] Upgrade to Neo4j Java Driver 5.3.1.

  • [documentation] Update Neo4j-OGM tutorial..

4.0.0

  • Remove Auto Index Manager

  • Remove of HTTP and embedded transport ("Driver")

  • Introduce simple DTO mapping

  • [dependencies] Upgrade to Neo4j Java Driver 5.2.0

  • [dependencies] Bump most other dependencies to the latest version

3.2

3.2.39

  • Allow for classes to be registered dynamically with DomainInfo.

  • Introduce simple DTO mapping.

  • Fix testing with local instance.

  • Check both index and classpath for known entities

  • Introduce equals/hashCode for Class/FieldInfo.

  • Make use of driver provider in test.

  • Add this branch to GH workflow.

  • Allow dynamic user and database selection.

3.2.38

  • Revert "Avoid unessary creation of builders."

  • Revert "Make reuse of existing builders threadsafe, check for property equality."

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

  • [bug] Check for literal null properties coming from stored procedures. (#909)

3.2.35

  • [dependencies] Bump classgraph from 4.8.141 to 4.8.147

3.2.34

3.2.33

  • [refactor] Remove unused methods, improve logging.

  • [test] Fix a flaky test.

  • Increment only version properties of changed relationship entities. (#903)

  • [test] Add more tests for #902.

  • [docs] Add latest Neo4j versions as supported.

  • [docs] Improve changelog entry.

3.2.32

  • [bug] Don’t flatten collections of known entities. (#902)

  • [improvement] Avoid unnecessary creation of builders.

60e5f51 (the fix for #902) can lead to breaking changes in some custom queries (all queries having several levels of nested lists of domain objects). They have been incorrectly flattened before that change and their structure will be preserved afterwards.

An example. A query returning

[[n0, n1, n2], [n3], [n4], [n5, n6]]

with n1..6 being known domain objects will be flattened to a [n1, n2, n3, n4, n5, n6] prior to 3.2.32. The above structure will now be preserved.

This also applies to pattern comprehensions like those:

MATCH (n:Movie{title:'Pulp Fiction'}) return n, [(n)-[r:UNKNOWN]-(p) | [r,p]] as relAndNode

prior to the fix, relAndNode would have been returned as a single array. Now it will be returned as a collection of arrays, exactly what the comprehension states.

See the notes in the linked commit and this comment.

3.2.31

  • [dependencies] Drop commons-lang3 from core dependencies.

  • [dependencies] Bump neo4j35 from 3.5.30 to 3.5.31

  • [dependencies] Bump classgraph from 4.8.139 to 4.8.141

  • [dependencies] Bump httpcore from 4.4.14 to 4.4.15

  • [dependencies] Bump slf4j from 1.7.25 to 1.7.36

  • [improvement] Lazy hydrate response model.

3.2.30

  • [improvement] Improve performance of TypeAdapterLookupDelegate.

3.2.29

  • [improvement] Allow enums as composite property values. (#899)

  • [dependencies] Update to Classgraph 4.8.139.

  • [dependencies] Update to Classgraph 4.8.137.

  • [improvement] Parse class hierarchy recursive.

  • [tests] Ensure locks are correct when object is reloaded. (#894)

3.2.28

  • [dependencies] Upgrade Neo4j 3.5 to 3.5.30.

  • [improvement] Avoid locking on whole class for retrieving various information. (#891)

  • [improvement] Removed unnecessary synchronized. (#889)

  • [dependencies] Upgrade testcontainers to 1.16.2.

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

  • [bug] Paths should not be individually iterated (Happened with Bolt transport and PATH_LOAD_STRATEGY).

3.2.26

  • [new-feature] Add support for read-only-properties. (#786)

  • [tests] Demonstrate correct equals/hashCode for @RelationshipEntity. (#868)

  • [dependencies] Update to Classgraph 4.8.116. (#886)

  • [bug] Use EnterpriseGraphDatabaseFactory if available. (#883)

  • [improvement] Add Java modules names for native types.

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

  • [dependencies] Update Neo4j Java driver to 4.0.3.

  • [dependencies] Upgrade Http Core to 4.4.14.

  • [dependencies] Upgrade Http Client to 4.5.13.

  • [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

  • [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

  • [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

  • [bug] Close Driver if verifyConnectivity fails to avoid resource leak. (#869)

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

  • [improvement] Add shims for GraalVM native image. (#863)

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)

  • [improvement] Cache start and endnode field info for ClassInfo instances describing relationship entities. (#852)

  • [improvement] Cache relationship type. (#853)

  • [improvement] Avoid recursive traversal for computing events. (#854)

  • [improvement] Allow reusable test containers. (#858)

  • [dependencies] Update JUnit to 4.13.1.

  • [dependencies] Upgrade Neo4j 3.5 to 3.5.23.

3.2.17

  • [bug] Fix determination of target graph property type. (#846)

  • [improvement] Log query notifications in Bolt transport. (#847)

3.2.16

  • [bug] Convert collection based parameters for filters individually. (#829)

  • [bug] Avoid early population of externally generated ID fields. (#831)

  • [bug] Ignore duplicates in constraint definitions. (#836)

  • [improvement] Update Neo4j 3.5 to 3.5.21.

  • [improvement] Precompute hashCode of MappedRelationship. (#838)

  • [improvement] Compile pattern in case-insensitive mode. (#840)

  • [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

  • [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, 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

  • Relationships incoming from an inheritance tree are not deleted. (#806)

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.

  • Dependency upgrades

    • Neo4j 3.4.18 and 3.5.19

    • Neo4j Java Driver 4.0.2

3.2.12

  • GH-793 - Fix reading of Neo4j literal byte[] arrays.

  • Prepare tests for Neo4j 4.1

3.2.11

  • Update ClassGraph to 4.8.72.

  • Upgrade Neo4j 3.5 to 3.5.17.

  • Support advanced Neo4j URL schemes (bolt+s, bolt+ssc, neo4j+s, neo4j+ssc). (#775)

  • Enhance Pre- and PostSave events to include the saved object’s state. (#778)

  • Add additional tests for SingleUseEntityMapper. (#779)

  • Prevent NPE when 1:n relationships contains null elements. (#782)

  • Use converter for id based loading. (#787)

  • Treat composite keys correct during load and save operations. (#790)

3.2.10

  • Update Java Driver to 4.0.1.

  • Update Neo4j 3.5 to 3.5.16.

  • Add zoneId to @DateString. (#773)

  • IgnoreCase filter support for starts/ends with.

  • Kotlin support: Add String.asParam(). (#769)

3.2.9

  • Update to latest version of HttpClient and Core. (#754)

  • Ignore existing full text indexes when using the auto index manager. (#760)

  • Support @DateString on java.time.Instant attributes. (#761)

  • Update to latest Classgraph, improving memory usage in low-memory environments. (#762)

  • Return correct nullable references from Kotlin extension methods. (#765)

  • Fix inconsistent behaviour of Driver.unwrap(). (#767)

  • 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<String, Any> = 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

  • Add explicit support for AttributeConverter used in Spring Data @QueryResult-classes in SingleEntityMapper. (#752)

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

  • Improve performance of fully qualified class name lookup. (#738)

  • Make OGM more resilient against scanning the root package. (#686)

  • Fix IllegalArgumentException on first reload with Spring Boot DevTools. (#743)

  • Avoid possible NPEs with bad domain model. (#741)

  • Make database configurable. (#744)

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

  • Pass depth parameter correctly from Kotlin session extension. (#724)

  • Upgrade Java driver to 4.0.0. (#720)

  • Recursively traverse variable length relationship patterns. (#718)

  • Fix inconsistent behaviour when querying parent classes. (#670)

  • Check for contradicting annotations before mapping possible related nodes. (#666)

  • Use all mapped labels when querying domain objects. (#651)

  • 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)

  • Fix lookup of inner, static classes. (#391)

3.2.3

  • Update Java driver to latest 4.0.0-rc1 release. (#699)

  • Optimize scanning and storage of Node- and RelationshipEntities. (#678)

  • Add support for Kotlin’s "implementation by delegation". (#685)

  • Improve class hierarchy of programmatic filter mechanism. (#345)

  • Deprecate various utility methods (#692, #693)

  • Fix possible NPE in IdentityMap. (#684)

  • Fix resolving of type descriptor in Kotlin collections. (#696)

  • Fix deletion of bidirectional, undirected relationships. (#657)

  • Fix field lookups in class infos and improve scanning algorithm. (#704)

  • Fix detection of generic 1:1 relationships. (#706)

  • Upgrade Neo4j 3.5 to 3.5.13.

  • Upgrade Neo4j 3.4 to 3.4.17.

3.2.2

  • MappingException in Session.queryForObject when actualType extends objectType. (#671)

3.2.1

  • Fix API compatibility issues with Spring Data Neo4j 5.1.x series.

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<T>). SDN doesn’t use that from 5.1.4 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)

  • Removed deprecated org.neo4j.ogm.exception.core.NotFoundException. (#319)

  • Removed deprecated org.neo4j.ogm.exception.core.ResultErrorsException. (#319)

  • Introduced exception translator to unify exceptions of different transports into an OGM hierarchy. (#319)

  • Improved hashing in IdentityMap and MappedRelationship. (#579)

  • 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<T> clazz) which provides a consistent 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)

  • Fix unstable sort order for some queries. (#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 cast instead of dynamic invocation for enum map keys. (#638)

  • Use concurrent hash maps as cache for entity access.

  • 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<T>)

  • 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<T> type, Collection<ID> 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<Enum> 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<T> type, Collection<ID> 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<Enum> 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<String> 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