sto provando in relazione tra APP utilizzando annotazioni embedded, ma io non sono in grado di eseguire con successo,@ElementCollection @CollectionTable in Uno a Molti mappatura
Qui il mio script SQL database è il seguente,
create table TBL_COLLEGE(
id integer primary key generated always as identity (start with 1000, increment by 5),
name varchar(50)
)
create table TBL_COURSE(
Id integer primary key generated always as identity (start with 10, increment by 1),
college_Id integer references TBL_COLLEGE,
name varchar(50)
)
Ecco il codice qui sotto per JPA,
@Embeddable
public class Course {
...
...
..
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="ID")
private Integer courseId;
@Column(name="NAME")
private String courseName;
@Column(name="COLLEGE_ID")
private Integer collegeId;
....
// getter and setter
}
Ecco la mappatura college,
@Entity
@Table(name="TBL_COLLEGE")
public class College implements Serializable{
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="ID")
private Integer collegeId;
...
..
@ElementCollection(targetClass=Course.class,fetch= FetchType.LAZY)
@CollectionTable(name="TBL_COURSE",[email protected](name="COLLEGE_ID"))
private Set<Course> course;
..
// getter and setter
}
Ma se provo a persistere college con set Corsi di raccolta, mi dà un'eccezione,
ERROR: HCANN000002: An assertion failure occurred (this may indicate a bug in Hibernate)
org.hibernate.annotations.common.AssertionFailure: Declaring class is not found in the inheritance state hierarchy: com.entities.Course
....
..
Può cortesemente dirmi se il mio approccio è sbagliato, O la mia comprensione per @CollectionTable è ancora minima, Erano sto andando male
Non è necessario definire l'annotazione OneToMany ecc .. E 'sufficiente rimuovere ID annotazioni dal embedde classe Ovviamente anche l'annotazione GeneratedValue dovrebbe essere rimossa. – asch
@asch: è vero, se si presuppone che l'OP non desideri che i corsi siano oggetti di prima classe. Date le tabelle come definite, rimuovere l'annotazione dell'ID causerebbe problemi. – sharakan
I corsi sono già annotati come Embeddable, quindi non è comunque l'Entità (suppongo si intenda ciò con "l'oggetto di prima classe") – asch