【问题标题】:persisting hyperjaxb-generated entities to mysql from eclipse将 hyperjaxb 生成的实体从 Eclipse 持久化到 mysql
【发布时间】:2014-12-08 12:27:36
【问题描述】:

我正在设置 hyperjaxb 以使用 this tutorial 在 eclipse 中运行。到目前为止,我已经得到了marshalunmarshal,但是它还没有触发hbm2ddl在数据库中创建表,并且不清楚我应该在eclipse目录结构中的哪个位置找到@987654328 @ 和 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();
    }
}

您可以通过clicking on this link 阅读来自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   

目录结构如下:

【问题讨论】:

    标签: java eclipse jaxb hbm2ddl hyperjaxb


    【解决方案1】:

    对于您当前的问题:如果Main.java 驻留在src/main/java 中并且需要调用TestFunctions.java,那么正常的Maven 开发会将TestFunctions.java 放入src/main/java 而不是src/test/java。 (根据src/test 中的任何内容,拥有您的“真实”代码(src/main 中的内容)通常是个坏主意。

    【讨论】:

    • 谢谢。 +1 试图提供帮助。我已经尝试过你的建议。但它只是推送错误消息。你愿意看看我的另一个问题,它显示了按照你的建议做的结果吗?这是链接:stackoverflow.com/questions/26347415/…
    • 我认为你在另一个问题中基本上遇到了同样的问题 - 你在 src/main 中有东西(在这种情况下,TestFunctions.java)试图访问 src/test 中的东西(在这种情况下,persistence.properties),它不起作用; main、TestFunctions 和 persistence.properties 都需要在 src/main 中,或者它们都需要在 src/test 中。我会为此添加一个答案。
    • 本题问如何触发hbm2ddl在MySQL数据库中创建表。它仍然没有这样做。但是,您对另一个问题的回答确实解决了另一个问题,因此我将您的另一个答案标记为已接受。这个问题还没有解决。
    • 很高兴我能帮助您完成第一步。如果您使用所看到的新行为更新此问题,我可以尝试在此处提供进一步的帮助。
    • 谢谢。我看到的新信息是一个不同的问题,因为新信息是一个增量步骤,然后我才能看到它的 hbm2ddl 级别。以下是当前信息的链接:stackoverflow.com/questions/26366556/…
    猜你喜欢
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2019-08-04
    • 2020-05-19
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多