将hyperjaxb生成的实体从eclipse持久化到mysql

我正在使用本教程设置hyperjaxb以在eclipse中运行。 到目前为止,我已经让它marshal unmarshal ,但它还没有触发hbm2ddl来创建数据库中的表,并且不清楚在eclipse目录结构中我应该找到Main.javaTestFunctions.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任何东西)。