我不得不问,我几乎什么都试过了。
实体类
@Entity
@Table(name="UserInfo")
public class User {
@Id@Column(name="user_name")
private String userName;
@Column(name="user_id")
private Integer userId;
}
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=BankingApplication</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">2OmniWay</property>
<!-- org.hibernate.HibernateException: No CurrentSessionContext configured! -->
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.default_schema">dbo</property>
<!-- Mapping with model class containing annotations -->
<mapping class="pojo.User"/>
</session-factory>
</hibernate-configuration>
SeesionFactory
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration();
configuration.configure("hibernate-annotation.cfg.xml");
System.out.println("Hibernate Annotation Configuration loaded");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(). applySettings(configuration.getProperties()).build();
System.out.println("Hibernate Annotation serviceRegistry created");
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
获取数据库中保存的对象
SessionFactory sessionFactory = HibernateUtil.getSessionAnnotationFactory();
Session session = sessionFactory.openSession();
Account account = null;
try{
account = (Account) session.get(Account.class, id);
我在主题上被提到了例外。我只是检查了三倍,检查了所有东西,但都不起作用。
任何建议都会有帮助。
___________Stack Trace_________
Exception in thread "main" org.hibernate.UnknownEntityTypeException: Unable to locate persister: pojo.User
at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:792)
at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2652)
at org.hibernate.internal.SessionImpl.access$2500(SessionImpl.java:164)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2590)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2577)
at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1044)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955)
at business.ManageAccount.getAccountDetails(ManageAccount.java:18)
at Utils.TestConnecttion.main(TestConnecttion.java:16)
发布于 2015-12-07 10:12:35
您需要在配置中专门添加实体类。默认情况下,它加载类,但不初始化实体类。对于这个问题,configuration.addAnnotatedClass()或addResource将解决这个问题。
发布于 2015-12-07 11:10:58
替换您的代码
"ServiceRegistry serviceRegistry =新的serviceRegistry
从SessionFactory到
serviceRegistry serviceRegistry=新的ServiceRegistryBuilder().applySettings( configuration.getProperties()). buildServiceRegistry();
并尝试使您的sessionfactory和serviceRegistry在课堂上保持静态。
希望它对你有用。
发布于 2018-02-17 09:48:49
//I am using Hib5,I have created SF like this and it is working
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder().build();
sessionFactory = metadata.getSessionFactoryBuilder().build();
}
return sessionFactory;
}
https://stackoverflow.com/questions/34128224
复制相似问题