Das ist meine Modellklasse (AppInfo, Userinfo)Hibernate geben unbekannte Wesen Ausnahme
@Entity
@Table(appliesTo="appinfo")
public class AppInfo {
@Id
@Column(name="appid")
private int appId;
@Column(name="appname")
private String appName;
@Column(name="roleid")
private int roleId;
@OneToMany(fetch=FetchType.LAZY,targetEntity=UserInfo.class,cascade=CascadeType.ALL)
@JoinColumn(name="Appid",referencedColumnName="appid")
private Set<UserInfo> userInfo;
// setters & getters
}
@Entity
@Table(appliesTo = "userinfo")
public class UserInfo {
@Id
@Column(name = "userid")
private int userId;
@Column(name = "username")
private String userName;
@Column(name = "hoid")
private String hoId;
//setters & getters
}
Meine hbm Konfigurationsdatei
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/taskdb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping class="com.myproject.hibernate.model.UserInfo.java"></mapping>
<mapping class="com.myproject.hibernate.model.AppInfo.java"></mapping>
</session-factory>
Meine Utility-Klasse
public class UtilityAnnotation {
private static final SessionFactory sessionFactory = buildSessionFactory();
@SuppressWarning
s("deprecation")
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void shutdown() {
// Close caches and connection pools
getSessionFactory().close();
}
}
Und schließlich Hauptklasse
public class OneToMany {
public static void main(String[] args) {
Session session = UtilityAnnotation.getSessionFactory().openSession();
session.beginTransaction();
UserInfo info = new UserInfo();
AppInfo ap = new AppInfo();
ap.setAppId(1);
ap.setAppName("Check");
ap.setRoleId(1);
info.setUserName("Grey");
info.setUserId(4);
info.setHoneyId("4");
Set<UserInfo> mys = new HashSet<UserInfo>();
mys.add(info);
ap.setUserInfo(mys);
session.save(ap);
session.getTransaction().commit();
session.close();
}
}
wenn ich laufe die Hauptklasse Iget folgende Fehler
Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.myproject.hibernate.model.AppInfo
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:693)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1485)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
at com.myproject.hibernate.practice.OneToMany.main(OneToMany.java:32)
ich Lösung gesucht und in vielen gesagt haben, die Konfigurationsdatei Zuordnung zu ändern, in dem Klassenpfad korrekt sein sollte, aber ich habe die richtige Klasse angegebenen Pfad so Was ist der Fehler, den ich hier mache?
Ich habe auch eine separate Hauptklasse, die Informationen in userinfo fügt und das funktioniert perfekt. Ersetzen
Betrachten hinzuzufügen ein Posting SSCCE - http://sscce.org/ –