• Type: New Feature New Feature
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:


      Using an @Embedded inside an entity or an other Embedded isn't posible using an Interface for the Declaration of the field.

      public class NaturalPersonImpl implements NaturalPerson{

      private final String firstname;

      private final String lastname;

      @Target(NativityImpl.class) // This annotation is a hibernate Annotation, not a JPA Annotation, it shoud be take over in JPA
      private final Nativity nativity;

      public NaturalPersonImpl(final String firstname, final String lastname, final Nativity nativity)

      { this.firstname=firstname; this.lastname=lastname this.nativity=nativity; }



      entityManager.persist(new NaturalPersonImpl("Kylie", "Minogue", new NativityImpl("Melborne", new GregorianCalendar(1968, 4, 28).getTime( ) );

      Instead of the @Target (as it is done in native Hibernate) something like @Embedded(target=NativityImpl.class) is posible too (as it is done for the normal Relations @OneToMany, @ManyToOne , @ManyToMany

      HardCoding the Implementation is bad, because Mocking with Mockito, EasyMock and so on is limited, when the implementations use final for example. Using the Hibernate Annotations avoid exchange interchangeability of the persistence provider. Specifieng abstract Classes in the target definition may me not possible, because the type can not be resoved reading the values back from database (because it isn't defined like by entities where the implementation is stored in the database). But simple cases without polymorhism should be possible.


        mquasten created issue -
        ldemichiel made changes -
        Field Original Value New Value
        Assignee ldemichiel [ ldemichiel ]


          • Assignee:
          • Votes:
            3 Vote for this issue
            0 Start watching this issue


            • Created: