2016-03-24 4 views
1

Я борюсь с этой проблемой в течение довольно долгого времени, я действительно надеюсь, что могу найти здесь какую-то помощь.JPA/Hibernate Не удалось определить тип

Я использую класс первичных ключей класса AssociationKey, который используется Ассоциацией классов. Идентификаторы в классе ключей также являются пользовательскими классами. Когда я пытаюсь запустить код я получаю сообщение об ошибке:

"Could not determine type for: IClassB, at table: Association, for columns: [org.hibernate.mapping.Column(ClassB)]" 

Я также попытался использовать ManyToOne и OneToMany аннотаций в классе ассоциации и ClassB. Но тогда я получаю сообщение об ошибке, что tpyes являются неправильны:

The attribute matching the ID class attribute ClassB does not have the correct type IClassB 

Разве нельзя использовать пользовательский класс как Id в составном первичном ключе?

@Entity 
@IdClass(AssociationKey.class) 
public class Association implements IAssociation { 

    @Id 
    private IClassA classA; 
    @Id 
    private IClassB classB; 
    ... 
} 


public class AssociationKey implements IAssociationKey, Serializable { 

    public IClassA classA; 
    public IClassB classB; 

    public boolean equals() {..} 
    public int hashCode() {..} 
} 


@Entity 
public class ClassB implements IClassA { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private List<IAssociation> associations; 
} 

ответ

1

Я думаю, что ваша проблема заключается в определении вашего первичного ключа. Составной первичный ключ состоит из пользовательских классов Java. Но спецификации JPA состояния следующие:

Простой первичный ключ или поле или свойство составного первичного ключа должен быть один из следующих типов: любого Java примитивного типа; любой примитивный тип обертки; java.lang.String; java.util.Date; java.sql.Date; java.math.BigDecimal; java.math.BigInteger.

+0

Спасибо, я так и думал. Я буду перепроектировать мою модель, тогда я думаю. – qrstvw

Смежные вопросы