Je suis en train d'essayer la mise en œuvre JPA de données de printemps à l'aide de crudepostory.
Ci-dessous est ma classe d'entité et avoir un référentiel comme ci-dessous, p> et essaye d'utiliser la base de données H2 pour les tests locaux P > et à partir de la commande CommandlinerUnner appelant la méthode de sauvegarde de l'USEREPOSITOIRE, mais obtenez l'erreur ci-dessous, P> causée par: org.hibernate.AnnotationExceptionException: Utilisation de @EonetoMany ou @manytomany ciblant une classe non acquise: modèle.user.photourls [java.lang.string]
à org.hibernate.cfg.annotations.collectionbinder.bindmanytomanySecondPass (CollectionBinder.java:1191) ~ [Hibernate-core-5.0.12.final.jar: 5.0.12.final]
à org.hibernate.cfg.annotations.CollectionBinder.bindstartomanysecondPass (CollectionBinder.java:794) ~ [hibernate-core-5.0.12.final.jar: 5.0.12.final] p>
blockQuote> p>
3 Réponses :
Hibernate prend en charge trois types de mappage de données: Basic (String E.G, Int), Industriable et entité. Le plus souvent, une ligne de base de données est mappée sur une entité, chaque colonne de base de données étant associée à un attribut de base. Les types intégrés sont plus courants lors de la combinaison de plusieurs mappages de champs dans un groupe réutilisable (l'embarquement étant fusionné dans la structure de mappage d'entité propre).
Les types de base et les intégrations peuvent être associés à une entité via le Vous devez donc supprimer dans le code ci-dessus, la photo est une entité. p> Voir le lien ci-dessous pour plus d'informations:
https://vladmihalcea.com/how-to -Optimize-unidirectionnel-collections-avec-JPA-and-hibernate / P> p> @ElementCollection Code>, dans une relation d'une entité - nombre-non-entité. p>
@EonetoMany code> comme l'est pour une Relation-et-activité-plusieurs-entités. Si vous souhaitez mapper vers une entité, alors besoin de modifier le code comme ci-dessous et de créer une nouvelle photo d'entité. P>
@Pradeep accepte cette réponse s'il résout votre problème.
Vous êtes Vous devez donc retirer @Enetomanany. P> @ElementCollection Annotation est utilisé pour stocker une liste de valeurs en tant qu'attribut d'entité sans avoir à modéliser une entité supplémentaire code>. P>
Vous n'avez pas besoin @onetomany code>,
@manytoone code>,
@Eonetoone code> ou
@manytomany code> ANNOTATION SAUF sont des relations entre les tables afin de supprimer
@onetomany code> car il n'y a pas de relation dans votre cas.
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id = null;
@ElementCollection
@CollectionTable(name="photoUrls")
@Valid
private List<String> photoUrls = new ArrayList<String>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<String> getPhotoUrls() {
return photoUrls;
}
public void setPhotoUrls(List<String> photoUrls) {
this.photoUrls = photoUrls;
}
}
Stackoverflow.com/questions/8969059/...