2015-01-22 6 views
0

гибернации требует идентификатор для моего лица:Создание составного идентификатора с помощью определения ManyToOne отношение

(броски org.hibernate.AnnotationException: Нет Идентификатор, указанный для объекта)

Вот родитель лицо:

@Entity 
@Table(name = "PARENT") 
public class ParentDb { 
    @Id 
    @Column(name = "INNER_ID") 
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "G1") 
    @SequenceGenerator(name = "G1", sequenceName = "SOME_SEQ") 
    private long id; 

    @Column(name = "TIMESTAMP") 
    private long timestamp; 

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "parent", cascade = {CascadeType.ALL}, orphanRemoval=true) 
    private List<ChildDb> children; 
} 

НО, идентификатор должен быть составным - родительский идентификатор и имя.

Как это определить?

ответ

0

Я считаю, делать это будет работать:

@Entity 
@Table(name = "CHILDREN") 
public class ChildDb implements Serializable{ 

@Id 
@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "INNER_ID", nullable = false) 
private ParentDb parent; 

@Id 
@Column(name = "NAME") 
private String name; 

@Column(name = "VALUE") 
private double value; 

}

+0

Почему вы считаете, что это сработает? Можете ли вы указать на какую-то документацию? Возможно, учебники делают это? –

+1

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-identifier – abinsalm

+1

читать 2.2.3.2.2 для аннотации @ID – abinsalm

0

На мой взгляд, странная вещь, что вы могли бы это:

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "INNER_ID", nullable = false) 
private ParentDb parent; 

У вас есть "INNER_ID" также в вас ChildDB. В случае отношений OneToMany сторона @ManyToOne должна быть владельцем внешнего ключа.

+0

Что вы подразумеваете под «владельцем внешнего ключа»? Как у вас есть внешний ключ? –

+0

Я уже обновляю вопрос о том, как выглядит родительский. –

+0

Вы также показываете структуру базы данных, я так же говорю о INNER_ID, потому что вы используете столбец INNER_ID на стороне мальчика – Skizzo