将hyperjaxb生成的实体从eclipse持久化到mysql
我正在使用本教程设置hyperjaxb
以在eclipse中运行。 到目前为止,我已经让它marshal
unmarshal
,但它还没有触发hbm2ddl
来创建数据库中的表,并且不清楚在eclipse目录结构中我应该找到Main.java
和TestFunctions.java
类的位置我创建的是从上面的教程链接运行代码。 如何更改我的eclipse配置以使这些事情发生?
这是我的main.java:
package maintest; public class Main { public static void main(String[] args) { TestFunctions mf = new TestFunctions(); try {mf.setUp();} catch (Exception e) {e.printStackTrace();} mf.unmarshal(); mf.setUpPersistence(); Long id = mf.saveToDatabase(); System.out.println("hjid is: "+id); mf.loadFromDatabase(id); mf.marshal(); } }
您可以通过单击此链接从TestFunctions.java
读取更冗长的代码。 请注意,尽管代码在我的机器上是左对齐的,但文件共享站点错误地使代码居中对齐。
persistence.properties
是:
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.username=someusername hibernate.connection.password=somepassword hibernate.connection.url=jdbc:mysql://localhost/sometestdatabase hibernate.hbm2ddl.auto=create-drop hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider hibernate.jdbc.batch_size=0
当我右键单击Main.java
并单击run as.. java application
时,我正在获得以下堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: maintest/TestFunctions at maintest.Main.main(Main.java:7) Caused by: java.lang.ClassNotFoundException: maintest.TestFunctions at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 1 more
这是目录结构:
对于您的直接问题:如果Main.java
驻留在src/main/java
并且需要调用TestFunctions.java
,那么正常的Maven开发会将TestFunctions.java
放在src/main/java
而不是src/test/java
。 (拥有你的“真实”代码通常是一个坏主意, src/main
的东西,取决于src/test
任何东西)。