Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JPA реализация наследоания


Автор: rang3r 7.12.2011, 22:22
Всем привет.
Подскажиет пж-та у меня есть след. иерархия классов:
EntityBase
Код

@MappedSuperclass
public abstract class EntityBase
{
    @Id
    private Long id;
    ...
}

NamedObject
Код

@MappedSuperclass
public abstract class NamedObject extends EntityBase
{
    @Column (name = "name", nullable = false, length = 100)
    private String name;
    ...
}

User 
Код

@Entity
public class User extends NamedObject
{
    @Basic
    private String email;

    @Basic
    private String password;
    ....
}

Вопрос  следущем, возможно ли так сделать маппинг, или в чем я ошибся? Написал тест для сохранения
Код

@Test
    public void testCreateUser()
    {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("SimpleSQL");
        EntityManager em = emf.createEntityManager();
        EntityTransaction et = em.getTransaction();
        et.begin();
        try
        {
            User user = new User("test_user", "[email protected]", "qwertyu");
            em.persist(user);
            et.commit();
        }
        finally
        {
            if (et.isActive())
                et.rollback();
            em.close();
        }
        ...
    }

Падает ошибка
Код

java.lang.IllegalArgumentException: out of field index :3
    at simplesql.core.entity.EntityBase.jdoCopyField(EntityBase.java)
    at simplesql.core.entity.EntityE.jdoCopyField(EntityE.java)
    at simplesql.core.entity.EntityE.jdoCopyFields(EntityE.java)

Как можно сделать маппинг в таком случае? Использую DataNucleus

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)