A new build of Versant JPA SDK is available for download: http://community.versant.com/JPA.aspx

 

The new version 1.0.3.1467 of the SDK is suited to work with Versant JPA Server 1.0.2.1383. The next release is scheduled for February 13.

 

Release notes for SDK v1.0.3.1467:

 

 

Please note:
In order to use the V/JPA 2nd Level Cache, please re-enhance your Entities.

New features/improvements:
-  #326: Support for Cacheable annotation and SharedCacheMode properties
- #2163: Distributed 2nd Level Cache with ehcache

Fixed:
- #1824: Under some rare circumstances online schema modifications are not 
         propagated to the user transaction
- #1909: VersantEntityManagerImpl#lock() should throw EntityNotFoundException
         if entity could not be found in the database [limitation documented]
- #2027: Better exception in case of wrong usage of merge that results in 
         duplicate LOIDs
         
Known Issues:
- #1151: queries using an IN expression on indexed strings are currently not 
         supported
- #1153: querying for empty strings in an IN expression is currently not 
         supported; example:
           "select obj from myEntity obj where obj.member in ('Foo', '')"
- #1154: multiple projections of the same entity class and/or its Id 
         attribute are currently not supported; examples:
           "select obj, obj from myEntity obj",
           "select obj, obj.loid from myEntity obj"
- #1310: Versant JPA allows mixing PROPERTY and FIELD access types in 
         Entities. However, keep the warning from the JPA 2.0 Specification 
         in mind: 
         "Note that when access types are combined within a class, the 
         Transient annotation should be used to avoid duplicate persistent 
         mappings."
         Duplicates are not automatically detected and prohibited.
         Here is an example how you should not mix:
            @Access(AccessType.PROPERTY)
            @Entity
            public class EntityItemWithDuplicateAttribute {
                ...
                transient public int backingValue;
                public int getValue() { return backingValue; }
                public void setValue(int v) { this.backingValue = v; }

                @Access(AccessType.FIELD)
                public int value;
                ...
            }
         Adding a @Transient annotation to getValue() or renaming the 
         getter/setter methods of the Property would solve this conflict.
- #1315: when adding a new field to a class and in the same transaction the
         new field is added to an existing index, the old index might not be 
         deleted
- #1529: query for null string members is currently not supported
- #1530: query for empty string members will also match null 
- #1532: queries for Infinity and NegativeInfinity values are currently not 
         supported
- #1787: objects larger than 127 MB are currently not supported
- #1815: the space character in database connection user names is currently
         not supported
- #1934: In expression with input param over indexed string attributes yields 
         empty/wrong result
- #2186: Clients using the Generic API might continue to run even if the 
         database is removed, resulting in arbitrary exceptions.
- #2189: Adding or removing attributes from an existing index might result 
         in unusable index. As a workaround, please remove the index in one 
         transaction (or use dbtool) and recreate it in a second transaction
- #2191: Some exceptions do not provide a detailed message