我在这个文件中保留表架构tableaddress.orm.xml<?xml version="1.0" encoding="UTF-8"?><entity-mappings version="2.1" xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <entity class="Address"> <attributes> <basic name="city" attribute-type="String" /> <basic name="country" attribute-type="int" /> <basic name="province" attribute-type="double" /> <basic name="postalCode" attribute-type="boolean"> </basic> <basic name="street" attribute-type="String" /> </attributes> </entity></entity-mappings>这是我尝试使用 Hibernate 创建表的方法public class App { public static void main( String[] args ) { Properties prop= new Properties(); prop.setProperty("hibernate.connection.url", "jdbc:mariadb:......"); prop.setProperty("dialect", "org.hibernate.dialect.MariaDB53Dialect"); prop.setProperty("hibernate.connection.username", "user"); prop.setProperty("hibernate.connection.password", "password"); prop.setProperty("hibernate.connection.driver_class", "org.mariadb.jdbc.Driver"); SessionFactory sessionFactory = new Configuration() .addResource("tableaddress.orm.xml").addProperties(prop).buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); session.getTransaction().commit(); session.close(); }} 它应该工作,没有编译错误,但由于某种原因没有创建表错误java.lang.NoClassDefFoundError: javax/transaction/SystemException
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
这可能是由于 Hibernate 中的错误/功能所致。
javax.transaction 已在 5.0.4 中从 Hibernate 中删除(好吧,标记为“已提供”),但它在 5.0.7 中被带回(参见https://hibernate.atlassian.net/browse/HHH-10307:
“JTA 不再可传递地提供 (HHH-10178) 导致不使用 JTA 的应用程序出现问题”
)
因此,假设您使用的是 5.04、5.0.5 或 5.0.6,您的选择是升级 Hibernate,或添加以下依赖项:
<dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency>
添加回答
举报
0/150
提交
取消