0

我正在尝试将休眠 orm 映射工具配置到我的 java 类并使用 MySQL。当我尝试运行应用程序时,我在控制台日志中遇到错误,错误 java.lang.ClassNotFoundException: play.db.jpa.JPABaseStatement。我现在使用的休眠版本是 5.4.10 版本。

这是错误日志

java.lang.ClassNotFoundException: play.db.jpa.JPABase
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:161)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:89)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:55)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1195)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
    at com.one.Test.main(Test.java:27)
java.lang.ClassNotFoundException: play.db.jpa.JPABase
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:161)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:89)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:55)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1195)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
    at com.one.Test.main(Test.java:27)
Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.Session.close()V
    at com.one.Test.main(Test.java:28)

以下是我的 hibernate.cfg.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
 "classpath://org/hibernate/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
 <session-factory>
 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/demo</property>
 <property name="hibernate.connection.username">root</property>
 <property name="hibernate.connection.password">adesh@123P</property>
 <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
 <property name="hbm2ddl.auto">create</property>
 <property name="show_sql">true</property>
 <mapping class="com.one.Customer"></mapping>
 <mapping class="com.one.Transection"></mapping>
 </session-factory>
 </hibernate-configuration>

我的 POJO 课程 1

package com.one;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="customer")
public class Customer {
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @Column(name="name")
    private String name;
    @Column(name="mobile")
    private String MobileNumber;
    
    @OneToOne(targetEntity=Transection.class,cascade=CascadeType.ALL)
    private Transection transaction;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMobileNumber() {
        return MobileNumber;
    }

    public void setMobileNumber(String mobileNumber) {
        MobileNumber = mobileNumber;
    }

    public Transection getTransaction() {
        return transaction;
    }

    public void setTransaction(Transection transaction) {
        this.transaction = transaction;
    }
    
    
    
}

我的 POJO 课程 2

package com.one;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="transaction")
public class Transection {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @Column(name="date")
    private Date date;
    @Column(name="total")
    private int total;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public int getTotal() {
        return total;
    }
    public void setTotal(int i) {
        this.total = i;
    }
    
    
}

我的应用程序类:

package com.one;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Transaction;

public class Test {
    public static void main(String[] args) {
        Configuration configuration = new Configuration(); 
         configuration.configure("hibernate.cfg.xml"); 
         SessionFactory sessionFactory = configuration.buildSessionFactory(); 
         Session session = sessionFactory.openSession(); 
         Transaction transaction = session.beginTransaction(); 
         
         Customer customer = new Customer(); 
         customer.setName("sohan"); 
         customer.setMobileNumber("7575858595"); 
         Transection transection = new Transection(); 
         transection.setDate(new Date()); 
         transection.setTotal(5000); 
         customer.setTransaction(transection); 
         session.save(customer);
         
         transaction.commit(); 
         session.close(); 
         sessionFactory.close(); 
    }
}

下面是java hibernate结构图

Maven 文件

4

1 回答 1

0

您确定您使用的是 Play 框架吗?除了您的依赖项名称外,我没有看到任何提及它。如果没有,并且您只是尝试使用 hibernate 编写一些简单的代码,请使用原始工件hibernate-core

于 2022-01-25T18:26:12.903 回答