Я искал это исключение раньше, но не решения работало для моей проблемыHibernate:. «Использование @OneToMany ориентации неподключенного класса
У меня есть два класса:.
@Entity
@Table(name = "user")
public class User {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@OneToMany
@JoinColumn(name = "tutor_id")
private Set<Tutorium> tutoria;
}
и
@Entity
@Table(name = "tutorium")
public class Tutorium {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Colum(name = "tutor_id")
private int tutor_id;
}
Так что семантика «Один пользователь может научить много tutoria».
Но когда я ул arting мое заявление, я получаю исключение:
«Не удалось создать SessionFactory object.org.hibernate.AnnotationException: Использование
@OneToMany
или@ManyToMany
таргетирования неподключенному класс: model.User.tutoria [model.Tutorium ]».
Кто-нибудь знает, как я могу решить эту проблему?
Edit:
Попытка дать вам небольшой пример того, как я доступ к классам:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
public class UserFilter {
private static SessionFactory factory;
public UserFilter() {
try{factory = new Configuration().configure().addAnnotatedClass(User.class).buildSessionFactory();}
catch(Exception e) {}
}
public Collection<User> getUser() {
Session session = factory.openSession();
Transaction t = null;
try{
t = session.beginTransaction();
CriteriaBuilder cb = session.getEntityManagerFactory().getCriteriaBuilder();
Join<User, Tutorium> tutoria = this.root().join("tutoria");
CriteriaQuery output = cb.createQuery(User.class);
output.groupBy(this.root().get("id"));
TypedQuery q = session.getEntityManagerFactory().createEntityManager().createQuery(output);
List users = q.getResultList();
return users;
}
catch(Exception e) {}
finally {
session.close();
}
}
}
Часть с присоединиться и группеПо придаточного пока не тестировалась. Это была функция, которую я хотел реализовать дальше. Но прежде чем я смог это сделать, было исключено исключение.
Надеюсь, пример в основном прозрачный.
В вашей настойчивости.xml, вы используете сканирование путей для поиска классов? Если нет, есть ли «Tutorium»? Или иногда бывает, что аннотация '@ Entity' в« Tutorium »не из пакета JPA? – Brian
Я не создал persistence.xml. Поскольку учебник в [link] (https://www.tutorialspoint.com/hibernate/) сказал, что если вы используете аннотации, вам не понадобится xml-configfile ...: O – Stefan
Кроме того, что ваше сопоставление выглядит неправильно для того, что вы хотите, как сказано в опубликованных ответах, я думаю, что это не причина вашей проблемы. Взгляните на http://stackoverflow.com/questions/4956855/hibernate-problem-use-of-onetomany-or-manytomany-targeting-an-unmapped-clas –