Hibernate Entity Не удается определить тип сопоставления @ManyToOne для столбца @Id - PullRequest
0 голосов
/ 05 января 2012

У меня очень простая проблема, и я не уверен, что это ошибка в спящем режиме или проблема с JPA 2.0.

У меня есть простой @ 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..

}

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

Когда я пытаюсь запустить спящий режим, я получаю следующую ошибку:

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 является fk, но я не могу изменить схему.

Известны ли какие-либо разрешения?

Спасибо

1 Ответ

1 голос
/ 05 января 2012

У вас должно быть базовое свойство, сопоставленное как ID, и ManyToOne, сопоставленное с тем же столбцом и использующее аннотацию @MapsId.

...