java - 没有可用外键的 JPA 实体映射

标签 java jpa ejb-3.0 toplink jdeveloper

我并没有真正开始使用实体 bean,但它们现在正盯着我看。

我们有几个相互关联的表,但是没有外键,我们不能添加任何外键。对于这个问题,数据库不能改变,这是不可能的,但作为一个不同的解决方案,我们可能会创建 View 。无论如何...

我有 3 个表。 LOCATION 、 LINKS 和 ENDPOINT 以及额外的盐,我们有一个 LINKS_TYPE 表。

LOCATION 表有一个主键 LOCATIONID,它是一个包含位置 ID 的字符串。

LINKS 表有一个 LINKID 作为主键 包含 ENDPOINT 主键的 LINK_ATTR_VALUE_A 列 LINK_ATTR_VALUE_B 列,其中包含 LOCATION 的主键。 包含 LINKS_TYPE 主键的 LINKTYPEID 列

ENDPOINT 表有一个主键 POINTID

LINKS_TYPE 有主键 LINKTYPEID LINKTYPEA 列(定义它链接到的表名的文本字符串) LINKTYPEB 列(定义它链接到的表名的文本字符串)

现在即使提到了 LINKS_TYPE,我现在也不必担心,因为在这个数据库实例中没有其他链接。

我想在我的 LOCATION 实体“List endPoints”中定义一个成员 根据我的理解,这将是一个@OneToMany。 请记住,这里没有外键可以提供帮助,而且永远不会有。

这是我定义的映射...

@OneToMany ( cascade=CascadeType.ALL)
@JoinTable ( name = "ENDPOINT",
             joinColumns = @JoinColumn ( 
                                name = "LINK_ATTR_VALUE_B"
                            ),
             inverseJoinColumns = 
                            @JoinColumn ( 
                                name = "LINK_ATTR_VALUE_A"
             )
            )
private List<EndPoint> endPoints;

很可能你会意识到我不知道我在做什么 :D 但是文档并不太好,我已经订购了一本关于 ejb 3 的帮助书,但我只是没有时间在这个映射之前完成这本书 :D

我们将 TopLink 与 jdeveloper 11g 和 weblogic 服务器以及 oracle 10g 一起用作数据库。

当使用 serviceFacade 客户端进行查询时,一切似乎都是正确的(从那时起工作区就死了,我必须重新创建项目才能让客户端工作)。 在我看来,它生成完美的查询以检索正确的数据。 然而,它没有结果。

我愿意提供尽可能多的信息,只是不确定需要什么。 但我知道我的映射很可能是错误的,这是因为我不理解映射。

有人可以帮助我吗?

谢谢。

最佳答案

您的LINKS 表看起来像LOCATIONENDPOINT 之间的多对多映射表,而不是一对多。这里的一个大问题是,除了您列出的 LINKIDLINK_ATTR_VALUE_ALINK_ATTR_VALUE_B 之外,它是否还有其他列?

如果是,那么您必须将其映射为一个单独的实体:
Location 会将一组 Links 映射为双向一对多
Link 将与 LocationEndPoint

具有多对一关系

如果,OTOH,LINKS 没有其他列并且您愿意放弃它的主键(既不需要也不能映射到多对-许多连接表),那么您可以将其映射为 Location 上的 EndPoint 的多对多集合。

如果您能澄清您的问题,我会更新我的答案以在您需要时包含实际映射。

关于java - 没有可用外键的 JPA 实体映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1195480/

相关文章:

java - 修改/替换拦截器内的 ClientHttpResponse 主体(ClientHttpRequestInterceptor)

java - 如何使用 slf4j 记录器将日志打印到文件以进行调试和其他级别

java - setMaxResult 无法在带有 Hibernate 的 MSSQL Server 2014 中工作

java - 在 JPA 中加入命名查询

java - 在 pom.xml 中添加 javaee-api 依赖项时 SpringBoot 测试失败

java - 带有 CMT 的 Ejb3 无状态 bean

java - GWT 2.4.0 可以与 Java EE5 一起运行吗?

java - Java中的形状组合?

java - Spring 集成 : Calling event once certain sets of events have performed their task successfully.

java - ejb中的Web服务问题