2012-01-04 8 views
0

У меня очень простая проблема, и я не уверен, что это ошибка в спящем режиме или проблема с JPA 2.0.Hibernate Entity Невозможно определить тип отображения @ManyToOne в столбце @Id

У меня есть простой @Entity

@Entity 
public class LegacyClearanceNodeMapping { 
    @Id  
    @ManyToOne 
    @JoinColumn(name="nid") 
    private LegacyNode clearanceNode; 

    @ManyToOne 
    @JoinColumn(name="rentable_nid") 
    private LegacyNode rentableNode; 

    @Column 
    private Integer quality; 

    ..snip.. 

} 

По сути, это многие-ко-многим класса карта, но она имеет мета-данные об ассоциации, поэтому я не могу относиться к нему таким образом.

При попытке запуска в спящем режиме, хотя, я получаю ошибку follwoing:

org.hibernate.MappingException: Could not determine type for: 
com.***.inventory.model.clearance.LegacyNode, at table: LegacyClearanceNodeMapping, for columns: [org.hibernate.mapping.Column(clearanceNode)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:292) 
    at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:175) 
    at org.hibernate.cfg.Configuration.iterateGenerators(Configuration.java:743) 
    at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:854) 
    at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:128) 
    at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:91) 

я могу подозревать, только что Hibernate не нравится PK будет Ф.К., но я не могу изменить схему.

Любые известные резолюции?

Благодаря

+0

Должно ли это не быть OneToOne? Я имею в виду, если ключ foreing также является ключом primery, то у этого объекта может быть только одна связь с родительским объектом, не так ли? –

ответ

1

Вы должны иметь основное свойство отображается как идентификатор, и ManyToOne отображенный на той же колонке, и с помощью @MapsId аннотацию.