我在這個文件中保留表架構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
提交
取消