revisit restrictions on entity, embeddable, and primary key classes #380
Closed
Description
Reviewing the spec, I'm wondering whether we should revise some restrictions on user code.
@Entity
classes
An entity class must:
- be toplevel
- be non-
final
- have a no-arg constructor (
public
/protected
) - have properties declared
public
/protected
But this leads me to wonder why static
inner classes are prohibited?
@Embeddable
classes
Embeddable classes have the same restrictions as entity classes.
But I would have expected that an embeddable class should be non-abstract
.
And I don't see any reason why static
inner classes should be prohibited.
Primary key classes
A primary key class must:
- be
public
- have a no-arg constructor (
public
) - have properties declared
public
/protected
- be serializable
- declare equals/hashCode
Why must a primary key class be public
when we don't apply this restriction to embeddables?
Is the requirement for serializability really necessary? (Yes, I remember where this came from, but I don't believe it's relevant anymore.)
Surely a primary key class should always be non-abstract
.
Metadata
Assignees
Labels
No labels