我并没有真正开始使用实体 bean,但它们现在正盯着我看。
我们有几个相互关联的表,但是没有外键,我们不能添加任何外键。对于这个问题,数据库不能改变,这是不可能的,但作为一个不同的解决方案,我们可能会创建视图。无论如何...
我有 3 张桌子。LOCATION 、 LINKS 和 ENDPOINT 以及额外的盐,我们有一个 LINKS_TYPE 表。
LOCATION 表有一个主键 LOCATIONID,它是一个包含位置 ID 的字符串。
LINKS 表有一个 LINKID 作为主键,一列 LINK_ATTR_VALUE_A 包含 ENDPOINT 的主键,一列 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 客户端进行查询时,一切似乎都正确(从那时起工作区就死了,我必须重新创建项目才能让客户端正常工作)。在我看来,它会生成完美的查询来检索正确的数据。然而,它以没有结果而告终。
我愿意提供尽可能多的信息,只是不确定需要什么。但我知道我的映射很可能是错误的,这是因为我不理解映射。
有人可以帮助我吗?
谢谢你。