javax.persistence.Table中的NoSuchMethodError

时间:2016-05-24 08:50:16

标签: java hibernate jpa

我正在使用Hibernate 4.3.6并使用基于注释的持久性定义。在tomcat 8.0上运行正常。但是,当我在WAS Liberty配置文件8.5.5.7中部署时,它给出了根本原因异常,如下所示,并且无法弄清楚原因。有人告诉他们将Hibernate升级到5.1.0但是没有用。我正在使用Eclipse进行开发。我也在使用Spring 4.0.1。

public class ResourceLoader {

    public void generateDefaultServerXml() {
        try {
        String defaultxmltext  =readFileToString("/default-server.xml");
        writeFileFromInputString(defaultxmltext);
        } catch (IOException e) {
            //exception
        }
    }

    public static void writeFileFromInputString(String everything) throws IOException {

        try (BufferedWriter writer = new BufferedWriter(new FileWriter("./default-server.xml"))) {
            everything = everything.replaceAll("\n", System.getProperty("line.separator"));
            writer.write(everything);
        }
    }

    public static String readFileToString(String path) throws IOException {
        String everything = null;
        try (BufferedReader br = new BufferedReader(new FileReader(path))) {
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
            everything = sb.toString();
        }
        return everything;
    }
}

1 个答案:

答案 0 :(得分:0)

Code For bulk data insertion public void BulkInsert(string connectionString, DataTable dataTable) { using (var npgsqlConn = new NpgsqlConnection(connectionString)) { npgsqlConn.Open(); var commandFormat = string.Format(CultureInfo.InvariantCulture, "COPY {0} {1} FROM STDIN BINARY", "logging.testtable", "(firstName,LastName,LogDateTime,RowStatus,active,id,paymentdone)"); using (var writer = npgsqlConn.BeginBinaryImport(commandFormat)) { foreach (DataRow item in dataTable.Rows) { writer.WriteRow(item.ItemArray); } } npgsqlConn.Close(); } } DataTable Function private static void BulkInsert() { DataTable table = new DataTable(); table.Columns.Add("firstName", typeof(String)); table.Columns.Add("LastName", typeof(String)); table.Columns.Add("LogDateTime", typeof(DateTime)); table.Columns.Add("RowStatus", typeof(int)); table.Columns.Add("active", typeof(bool)); table.Columns.Add("id", typeof(long)); table.Columns.Add("paymentdone", typeof(bool)); var dataRow = table.NewRow(); dataRow[0] = "Test"; dataRow[1] = "Temp"; dataRow[2] = DateTime.Now; dataRow[3] = 1; dataRow[4] = true; dataRow[5] = 10; dataRow[6] = true; table.Rows.Add(dataRow); BulkInsert(ConfigurationManager.ConnectionStrings["StoreEntities"].ConnectionString, table); } 类路径中的jar不正确,版本2.1之前的WebSphere Liberty注释为 @NeilStockton建议。

首先,尝试在Eclipse的源代码中添加JPA。如果它可以正确导入 - 你在Eclipse的类路径中有一个正确的@Table(indexes = {})(它适用于Hibernate 5)。之后删除hibernate-jpa-2.1-api-1.0.0.Final.jar

要查找加载了错误@Table(indexes = {})注释的jar,请尝试在独立于Spring配置的某处执行此代码。您可以使用@Table

ContextListener