Appendix A. Compliance and limitations

Issue tracking numbers can be looked up in JIRA on http://www.hibernate.org/ if you want to verify the current state.

3.1beta8 Preview (20-01-2006)
-----------------------------
** Bug
    * [ANN-132] - transient fields are considered to be persistent when not annotated with @Transient
    * [ANN-162] - OneToMany mapping from annotated to hbm loaded class fails with infinite loop
    * [ANN-175] - extractType executed on @Transient and fail when the return type is <T extends MembershipData>  T
    * [ANN-176] - Endless loop when annotated class references by ManyToOne class mapped in .hbm.xml
    * [ANN-177] - unable to use referencedColumnName = joined subclass primary column name
    * [ANN-178] - Different handling column naming with @JoinColumn between 3.1beta5 and 3.1beta7
    * [ANN-180] - Indexed collection, field access, onetomany+mappedby seems to fail
    * [ANN-187] - Unable to referenceColumnName a column (property) of the super class
    * [ANN-193] - @IdClass should work on @MappedSuperclass
    * [ANN-199] - NPE when mappedBy property is wrong on a @OneToOne
    * [ANN-214] - Annotation website documentation syntax error

** New Feature
    * [ANN-147] - Allow embeddable subclasses in the middle of a class hierarchy
    * [ANN-172] - Delegates the SQL type of enum to @Enumerated
    * [ANN-188] - @Email for validator
    * [ANN-190] - @TableGenerator as per the pfd instead of @GeneratorIdTable & co
    * [ANN-191] - Non entity classes in between entity classes in the hierarchy
    * [ANN-200] - Support of @Basic, @Lob, @Enumerated, @Temporal as per the PFD
    * [ANN-209] - @Named(Native)Query(hints=...)


** Improvement
    * [ANN-17] - Support dotted annotation when declaring resultsets
    * [ANN-56] - @AccessType: Support mixed field/property access strategies for an Entity
    * [ANN-192] - Access type guessed from position of @Id or @EmbeddedId
    * [ANN-194] - Access type guessed from owner entity for Embeddable objects
    * [ANN-198] - Better error message when @ManyToOne references an unknown entity
    * [ANN-201] - Rename @EmbeddableSuperclass into @MappedSuperclass
    * [ANN-203] - Move to @Id @GeneratedValue(strategy=AUTO, generator="blah")
    * [ANN-204] - @TableGenerator instead of @TableGenerator and @GeneratedIdTable
    * [ANN-205] - @NamedQuery(query=...) instead of @NamedQuery(queryString=...) same for @NamedNativeQuery
    * [ANN-215] - Support SqlResutSetMapping with dotted notation in arbitrary order
    * [ANN-216] - Support scalar queries through @ColumnResult
    * [ANN-218] - @SecondaryTable(PrimaryKeyJoinColumn[] pkJoinColumns) instead of @SecondaryTable(JoinColumn[] joins() )
    * [ANN-219] - @JoinTable(name, catalog, schema, uniqueConstraints) instead of @JoinTable(table=@Table())
    * [ANN-220] - @Column(table=) and @JoinColumn(table=) instead of @Column(secondaryTable=)
    * [ANN-221] - @Inheritance(strategy), @DiscriminatorColumn(discriminatorType), @DiscriminatorValue instead of @Inheritance
    * [ANN-225] - @EntityListeners replace @EntityListener

3.1beta7 Preview (13-12-2005)
-----------------------------

** Bug
    * [ANN-114] - NPE when SecondaryTable uses a non pk reference column in @JoinColumn
    * [ANN-115] - @Index does not work on joincolumns
    * [ANN-117] - setOrphanDelete not set causing some delete-orphan .clear() to fail
    * [ANN-123] - Support for Generics superclass
    * [ANN-124] - FIELD constant thing is wrong in the doc
    * [ANN-133] - Bytecode enhancement process adds non-transient properties to beans
    * [ANN-135] - Inconsistent range check between Range Validator class and generated DDL.
    * [ANN-136] - Validator annotations not applied to the hibernate metamodel for id properties
    * [ANN-139] - SINGLE_TABLE inheritance raise an WrongClassException under certain circumstances
    * [ANN-142] - Automatic Generation of Composite IDs - Annonation declaration fails
    * [ANN-151] - <subclass extends= broken when using AnnotationConfiguration
    * [ANN-152] - Indexes generated by the LuceneEventListener are deleted at startup (Mattias Arbin)
    * [ANN-156] - MapKey Cannot Map @Id when using @IdClass
    * [ANN-165] - @Length(min=4) ie wo max generate a varchar(Integer.MAX_VALUE)
    * [ANN-171] - Class cast exception during processing of non getter generic methods
    * [ANN-173] - ClassValidator.getInvalidValues  should not depend on equals() for circularity check

** New Feature
    * [ANN-111] - add function for validating properties before bean creation
    * [ANN-116] - fetch validators from implemented interfaces
    * [ANN-125] - Validator does not preserve method hierarchy in InvalidValue[]
    * [ANN-127] - Add @Future
    * [ANN-128] - Externalize EJB3 namings to NamingStrategy


** Improvement
    * [ANN-119] - Embedded international error messages
    * [ANN-121] - Named Queries should be package level visible
    * [ANN-126] - mention usage of columnDefinition as part of @Column in docs
    * [ANN-138] - Support collections of value types with separate annotation
    * [ANN-148] - EnumType should be aware of DababaseMetadata.storesUpperCaseIdentifiers() and co (Tim Fennell)
    * [ANN-149] - Do not check lazy/uninitialized fields in Validator
    * [ANN-153] - Customize the parent directory for indexes generated by LuceneEventListener (Mattias Arbin)
    * [ANN-154] - Customize Analyzer subclass for the LuceneEventListener (Mattias Arbin)
    * [ANN-168] - @FilterDef should support condition
    * [ANN-170] - Keep user order of hbm files (to ease the typedef usage)


3.1beta6 Preview (06-10-2005)
-----------------------------
 * ANN-105 More exception handling in AnnotationConfiguration
 * ANN-109 @Index does not support join columns references
 * ANN-93 Make Hibernate Validator Serializable Friendly

3.1beta5 Preview (14-09-2005)
-----------------------------
 * ANN-70 Lucene integration
 * ANN-13 Support for referencedColumnName referencing non PK columns for @ManyToMany
 * ANN-63 Use metadata.getUserName() when guessing Enum backing type (Scott Haug)
 * ANN-38 Finish the optional=false support
 * ANN-69 Expand the resource bundle message itself in the Validator framework
 * ANN-68 Apply validator on a particular property (Jesus Marin)
 * ANN-41 Allow field validations and validate private method (Chris Wood)
 * ANN-75 Support named (native) query parameters (from Carlos Gonzalez)
 * ANN-73 Use an eager strategy for the second join of a ManyToMany
 * ANN-74 Allow configuration artefacts (hbm, classes) loading precedence
 * ANN-79 Support collection of composite elements
 * ANN-19 Annotations should support collections of primitive and core types
 * ANN-77 Support primitive arrays
 * ANN-20 Support dotted annotation when using overriding (Alexei Akhounov)
 * ANN-55 @Proxy annotation should take proxyClass argument
 * ANN-2 Bidirectional true @OneToOne
 * ANN-80 @NotFound(action=NotFoundAction.IGNORE)
 * ANN-57 @Table ignores unique contraint in association table
 * ANN-3 Support of component inside SecondaryTable
 * ANN-87 @InheritanceJoinColumn rename is incomplete
 * ANN-81 ColumnDefinition not assigned when using @Column and @JoinColumn
 * ANN-34 Second passes binded to HbmBinder.SecondPass
 * NPE on Index and Unique constrains when column name has case inconsistency
 * ANN-86 @Index not used on properties having no @Column
 * ANN-49 Super class of Embeddable not mapped correctly (Alexei Akhounov)
 * ANN-66 Null enums don't store to database correctly
 * ANN-65 Validator ignores components (the DDL still ignores it)
 * ANN-60 NPE when @EmbeddableSuperclass has a superclass @Entity
 * ANN-90 mention usage of @Column together with @Id explicitly
 * ANN-18 Document bean-level validator mecanism

3.1beta4 Preview (04-08-2005)
-----------------------------
 * ANN-54 EnumType fails to find the Enum in setParameterValues(Properties)
 * ANN-32 Support index creation
 * ANN-22 Hibernate 3 Annotations should support all Id generators
 * ANN-51 redeclaring id in entity subclass raises ClassCastException
 * ANN-43 @MapKey throw exception if key is id or a component subproperty
 * ANN-52 Exception when @OrderBy contains the id property or a component subproperty
 * ANN-13 Support for referencedColumnName referencing non PK columns for @ManyToOne, @OneToOne and @OneToMany
 * ANN-46 Raise a warning on @Filter on subclasses
 * ANN-48 @UniqueConstraint reorders columns (Chris Wood)
 * ANN-6 enum did not worked for enums persisted in string based columns (MySql and Oracle)
 * ANN-8 array of primitive no longer create a non null column
 * ANN-45 Proper support for @Basic byte[]
 * ANN-44 Don't mandate to list embedded superclasses
 * ANN-42 Don't mandate resultset to be defined before named native queries
 * ANN-11 More robust support for enum persistence (wider range of SQL types)
 * HBX-307 Remove @Serialized and support @Lob tagging of a serializable type

3.1beta3 (24-06-2005)
-----------------------------
 * Rename @AssociationTable to @JoinTable
 * HBX-213 support of @IdClass
 * change targetEntity from String to Class
 * HBX-305 Support Java5 Enums
 * Add @Basic(optional=false) and Lob(optional=false)
 * HBX-284 AnnotationOverride in inheritance in conjunction with @EmbeddedSuperclass
 * HBX-304 @AttributeOverride instead of @Embedded(override=@AttributeOverride) or @EmbeddedId(...)
 * HBX-290 All collection binder exception now show the collection role
 * HBX-299 Fix test suite error on MySql
 * HBX-302 @MapKey(name="propertyName") to map a map using a property of the associated class as a map key
 * HBX-201 @Formula on properties or fields.
 * Support @EntityResult(discriminatorColumn)
 * Relax List usage as per the spec (non indexed list are defaulted to bag semantic)
 * HBX-300 enable HQL order by fragment using @javax.persistence.OrderBy
 * HBX-298 FKs on association tables are forced not null
 * HBX-297 Primitive types creates a non null constrained column if defaulted and not SINGLE_TABLE (HBX-301)
 * HBX-287 @DiscriminatorFormula
 * HBX-205 @OnDelete(action=OnDeleteAction.CASCADE) for joined subclasses and collections
 * Change @OneToOne(usePkasFk=true) into @PrimaryKeyJoinColumn
 * Rename @InheritanceJoinColumn/@InheritanceJoinColumns to @PrimaryKeyJoinColumn/@PrimaryKeyJoinColumns
 * Support @Basic(temporalType=...)
 * HBX-282 protect @ManyToMany from abusive not joined filters
 * Align with @NamedNativeQuery/@NamedNativeQueries
 * HBX-283 Better getter resolution
 * HBX-75 Implicit inheritance join columns declaration in composite PK
 * HBX-54 Explicit exception when @Id is missing
 * HBX-210 Fix NPE when the @Id was on the superclass of the root entity in conjonction with @OneToOne use
 * HBX-280/HBX-157 Support @EmbeddabledSuperclass

3.0beta2 Preview (26-05-2005)
-----------------------------
 * Add the validate framework and bind it to the annotation binder.
 * HBX-199 Support @Columns and thus multi-column properties (ie composite user types)
 * HBX-206 Support @OrderBy and @Sort
 * HBX-203/HBX-81 Support Hibernate cascade strategies through @Cascade (Pablo Nussembaum)
 * HBX-47 Persist is cascaded on flush operation when using the EJB3 event listeners
 * HBX-125 Support for named native SQL queries (not Scalar results)
 * HBX-225 @Type annotation now work for @Id and @Version (Pablo Nussembaum, Emmanuel Bernard)
 * HBX-248 TABLE_PER_CLASS no longer limited to leaf entities and use union-subclass as its strategy
 * HBX-186 inheritance strategy no longer have to be defined on every entity (only on root entry)
 * HBX-53 Annotated classes can be defined in any arbitrary order
 * Support Array through @IndexColumn (Anthony Patricio)
 * HBX-216 Ignore static fields and properties
 * HBX-229/HBX-134 Filter javac generated methods that compensate type erasure aka bridge method (Rogério Gatto)
 * HBX-184 Support List mappings through @IndexColumn (Matthiew Inger, Emmanuel Bernard)
 * HBX-187 Move to a CollectionBinder structure (Matthiew Inger, Emmanuel Bernard)
 * Fix of CascadeType.REMOVE

3.0beta1 Preview (07-04-2005) based on the EJB3 Early Draft 2
-------------------------------------------------------------
 * support parameters in @Type (HBX-197)
 * support @TypeDef at package and class level
 * HBX-166 support @Lob for Character[],char[], String, byte[] and Byte[] (experimental)
 * HBX-159/HBX-140 add @Filter(s) and @FilterDef(s) (Matthew Inger, Magnus Sandberg)
 * HBX-44 @OneToOne support composite PK
 * @OneToOne is supported except for true bidirectional @OneToOne
 * Add @Cache annotation: allow to define caching on root entities and on collections (,eg @Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL, region="specificCacheRegion") )
 * Support @OneToMany default (ie using an association table)
 * HBX-164 insertable/updatable of @JoinColumn now work in @ManyToOne processing (Mario Ivankovits, Emmanuel Bernard)
 * HBX-153 @Id(generate=GeneratorType.AUTO, generator="my_potential_sequence") now work (Pablo Nussembaum)
 * Support @ManyToMany wo @AssociationTable (ie defaults)
 * Support @ManyToMany(mappedBy)
 * Support @OneToMany(mappedBy) (no JoinColumn needed on the @OneToMany side)
 * Appropriate default value when no @JoinColumn is defined in a ManyToOne
 * rename @GeneratorTable to @GeneratedIdTable
 * rename CREATE to PERSIST, add REFRESH cascade style
 * support Mapping Defaults for Non-Relationship Fields or Properties algorithm as defined in the EJB3 spec
 * support @Serialized
 * support @Lob for java.sql.Clob and java.sql.Blob
 * allow embedded object declaration wo @Embeddable (if @Embedded or @EmbeddedId is present in the property)
 * support for @EmbeddedId
 * rename DependentAttribute to AttributeOverride, Dependent to Embedded and DependentObject to Embeddable
 * support @ManyToOne in embedded objects
 * support for @NamedQuery and @NamedQueries (EJBQL)
 * move javax.ejb.* into javax.persistence.* and update copyright header

3.0alpha3 (28-02-2005)
----------------------
* HBX-116 Support for Where clause in classes and collections @Where(clause="")
* HBX-115 Support for class proxying configuration: @Proxy(lazy=false, proxyClassName="my.Interface")
* HBX-88 Support for hibernate type abstraction through @Type (only on basic properties for now)
* HBX-108 Support @BatchSize(size=n) for entities and collections
* HBX-107 implements @org.hibernate.annotations.Entity
* HBX-103 handle abstract classes
* HBX-83 precision & scale support for column (Bogdan Ghidireac)

3.0alpha2 (25-01-2005)
----------------------
* HBX-61 Support for @UniqueConstraint (except primaryKey=true)
* HBX-60 Support for a proper @TableGenerator (using MultipleHiLoPerTableGenerator)
* HBX-63 Support @GeneratorTable
* HBX-68 Add declarative configuration of annotated classes
* HBX-74 Rollback the HB-1315 fix: dialect no longer have to be set in hibernate.properties


Hibernate-annotations-3.0alpha1 based on the EJB3 Early Draft 1 (6.01.2005)
---------------------------------------------------------------------------
* Support for EJB3 annotations:
 - @Transient
 - @Column (not primaryKey)
 - @JoinColumn (referencedColumnName - only for a reference to a PK, not primaryKey)
 - @Version
 - @Basic
 - @Entity
 - @Table (not uniqueConstraints)
 - @AccessType
 - @Id
 - @CascadeType
 - @FetchType
 - @GeneratorType (NONE, IDENTITY, TABLE, SEQUENCE)
 - @TableGenerator (with scope visibility)
 - @SequenceGenerator (with scope visibility, does not support initialValue() and allocationSize())
 - *not* @GeneratorTable (will have to write a new TableHiloGenerator, but it can wait)
 - @ManyToOne (not optional)
 - @OneToMany (Set and Collection, generics version or not, JoinColumn not guessed)
 - @OneToOne
     but not optional
     no composite PK/FK
 - @ManyToMany
 - @AssociationTable (Has to be on both sides)
 - @Inheritance
 - @InheritanceType (has to be defined on every classes of the hierarchy for JOINED strategy,
                     not very clear about the TABLE_PER_CLASS strategy)
 - @DiscriminatorColumn
 - @DiscriminatorType
 - @InheritanceJoinColumn
 - @InheritanceJoinColumns
     this annotation for Composite PK Entities has to be explicit, I do not respect the implicit semantic of the EJB3 spec
 - @SecondaryTable (@OneToMany @JoinColumn(secondaryTable="..." does not work yet due to H3 core issue HHH-36
 - @SecondaryTables
     this annotation for Composite PK Entities has to be explicit, I do not respect the implicit semantic of the EJB3 spec
 - @DependentObject
 - @Dependent
 - @DependentAttribute (only for basic properties as per the spec)
 - @Id in conjunction with @DependentObject (composite primary keys)
 - @JoinColumns in conjunction with @ManytoOne, @OneToMany, @ManytoMany
      - note that the composite FK columns have to be in the same table (no != secondary tables). This is probably a weird case and certainly a not recommanded one.


Still missing or incomplete features compared to the EJB3 spec
--------------------------------------------------------------
 - support for initialValue and allocationSize in @SequenceGenerator (HBX-59)