18

I currently have a mySQL database and want interact with it using OData.

In other words, I want to expose the data in this form: http://services.odata.org/Northwind/Northwind.svc/

I've found several tutorials on how to do this (for example, http://msdn.microsoft.com/en-us/vs2010trainingcourse_buildingappandservicesusingodatavs2010_topic3.aspx) if I have Microsoft Visual Studio. But I'm a mac girl. :(

I've also looked at the libraries at the odata homepage (under libraries, and then mysql). But I can't get them to work.

Is there any easy SIMPLE library that can handle this for me?

Thanks so much for the help!!

4

2 回答 2

21

我已经想出了如何做到这一点 - 使用odata4j。我已经在下面记录了我的步骤,以防其他人想做类似的事情。

您将需要:

  • 从您的数据库生成 JPA 模型
  • 使用 odata4j 的 NorthwindJpaProducerExample.java 脚本

详细步骤如下:

  1. Odata4j 是 Java 中的开源 Odata 生产者/消费者。因此,您需要为 EE Developers 设置带有数据库的 Eclipse。如果您是 Eclipse 新手,我建议您阅读本教程。
  2. 按照这些说明生成 JPA 模型。
  3. 转到 Odata4j 并下载最新的存档 zip
  4. 将 odata4j-bundle-xxjar 添加到您的构建路径(它位于 bundles 文件中)。
  5. 插入来自 Odata4j 的以下脚本,可在其 github 上找到:NorthwindJpaProducerExample、JPAProvider 和 DatabaseUtils(需要slf4j)。(老实说,我只是将它们复制并粘贴到 Eclipse 中)。此时,您的 Project Explorer 栏应如下所示(没有 model.main):

项目浏览器栏

此时,右键单击项目并选择 Build Path > Configure Build Path。从您的 Odata4j 存档文件中添加以下“外部罐子”。

外部罐子

现在通过以下方式编辑 NorthwindJpaProducerExample 中的代码:

  1. 将字符串“endpointUri”更改为您希望 oData 位于的任何 url
  2. 将字符串“persistenceUnitName”更改为您在 persistence.xml 中的实体名称(如上图所示,我的名称为“createJPA”。)

NorthwindJpaProducerExample 中的代码示例

然后你就有了 OData!

我的 OData

在执行这些步骤时,我遇到了几个问题,并将在此处记录它们以防万一。

  • 为了成功执行第 2 步(生成 JPA),每个表都必须有一个主键。去做吧——我不是在开玩笑。
  • 编辑代码后,出现“BigInteger”错误。JPAProducer 不支持 bigInteger 字段类型。返回您的数据库并将列的大小更改为常规 int。
  • 以任何方式更改数据库后,请确保刷新数据库并清理项目。这会让你和 Eclipse 高兴。
  • 我不认为这对每个人都是必要的,但我确实需要添加 HyperSQL 驱动程序依赖项。如果您收到 HSQL 错误,请转到此处并获取最新的稳定版本。将 hsqldb.jar 添加到您的构建路径。

不是超级简单,但比 70 多页的手册要好得多。

于 2013-06-16T18:41:00.540 回答
0

这是您的另一种选择。使用Skyvia是一种无需编码的云解决方案,可将您的 MySQL 数据库公开为 OData。

就是这样:

首先,创建与 MySQL 数据库的连接。

在此处输入图像描述

然后,创建一个端点。向导将指导您完成其余的配置。

在此处输入图像描述

选择您之前创建的 MySQL 连接并选择您需要的表。然后,配置安全性。最后,将为您提供一个端点 URL。

而已。有关更多详细信息,请查看此链接

于 2022-01-17T09:02:26.087 回答