2017-05-14 9 views
1

私は間違っていますか? Exceprionは、私は "id"フィールドを挿入可能でなく更新できないようにする必要があると言います。しかし、私はすでにその注釈を持っています。そして私は "id"のセッターメソッドを削除しましたが、それは効果がありませんでした。何か不足していますか?org.hibernate.MappingExceptionは何の理由もないようです。

weblogic.application.ModuleException: org.hibernate.MappingException: Repeated column in mapping for entity: com.shop.database.entities.Object column: OBJECT_ID (should be mapped with insert="false" update="false"):org.hibernate.MappingException:Repeated column in mapping for entity: com.shop.database.entities.Object column: OBJECT_ID (should be mapped with insert="false" update="false") 
    at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:696) 
    at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:718) 
    at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:740) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:493) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270) 
    Truncated. see log file for complete stacktrace 

マイObject.classを:

@Entity 
@Table(name = "LAB3_OBJECTS") 
public class Object { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "OBJECT_ID", length = 10, insertable = false, updatable = false, nullable = false) 
    private int id; 
    @Column(name = "NAME") 
    private String name; 
    @ManyToOne 
    @JoinColumn(name = "OBJECT_TYPE_ID", referencedColumnName = "OBJECT_TYPE_ID") 
    private ObjectType objectType; 
    @ManyToOne 
    @JoinColumn(name = "OBJECT_ID") 
    private Object parent; 

public Object() { 
} 

public Object(String name, ObjectType objectType) { 
    this.name = name; 
    this.objectType = objectType; 
} 

public int getId() { 
    return id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public ObjectType getObjectType() { 
    return objectType; 
} 

public void setObjectType(ObjectType objectType) { 
    this.objectType = objectType; 
} 

public Object getParent() { 
    return parent; 
} 

public void setParent(Object parent) { 
    this.parent = parent; 
} 

}

+0

独自のオブジェクトクラスを作成しないでください。それは非常にミッドリーディングです。 – davidxxx

答えて

3

OBJECT_IDはまだ接合するために使用することができないID列として使用されます。新しい列を使用する

public class MyObject { 
    ... 
    @ManyToOne 
    @JoinColumn(name = "PARENT_OBJECT_ID") 
    private MyObject parent; 
+0

どうすればそれを逃すことができますか?高尚な、今私は上に移動することができます。 – Bobby

関連する問題