Jpa unidata命令从两个文件中查询数据
我的unidata数据库中有两个文件,如下所示Jpa unidata命令从两个文件中查询数据,jpa,openjpa,u2,unidata,Jpa,Openjpa,U2,Unidata,我的unidata数据库中有两个文件,如下所示 客户 -@CUSTOMERID -NAME -@HOBBYID (multi-valued, virtual attribute) HOBBY -@HOBBYID -HOBBY 客户和爱好是一对多关系。我想查询符合某种爱好的客户名单。unidata命令是什么 期待一个解决方案。谢谢。这里是一个简单的查询,您可以在ECL提示符下运行 用HOBBY=“MyHobby”@CUSTOMERID@CUSTOMERI
客户
-@CUSTOMERID
-NAME
-@HOBBYID (multi-valued, virtual attribute)
HOBBY
-@HOBBYID
-HOBBY
客户
和爱好
是一对多关系。我想查询符合某种爱好的客户名单。unidata命令是什么
期待一个解决方案。谢谢。这里是一个简单的查询,您可以在ECL提示符下运行
用HOBBY=“MyHobby”@CUSTOMERID@CUSTOMERID.NAME列出业余爱好
让我解释一下
当您查看多对1关系时,如果您从“多”表开始,您可以使用虚拟字典项来执行此操作(我知道,这是违反直觉的,对吧?)
列出爱好
-@HOBBYID
-HOBBY
在这里,我们只是指示引擎简单地显示爱好文件中的数据
与WITH HOBBY=“MyHobby”
我假设您已经创建了一个名为HOBBY的字典项——可能是指向正确属性的D类型
@CUSTOMERID
另一个假设是,您有一个D类型字典项,它指向HOBBY中的属性,该属性具有@CUSTOMERID。为了这个答案,我假设@CUSTOMERID是一个值。这只是告诉列表显示每个记录的这段信息
@CUSTOMERID.NAME
这是一个I型字典,如果您还没有创建,您需要创建它。基本上,在字典项的属性2中,您会有类似于TRANS(“CUSTOMER”,“CUSTOMERID”,2,“X”)
的内容。这告诉它读取当前嗜好记录的ID为@CUSTOMERID的记录,并返回属性2(我假设属性2是存储客户名称的地方,根据需要更改。“X”告诉TRANS函数只返回一个空字符串,因为找不到客户记录。Dan
我想你已经假设了更多。提供的信息并不意味着两个方向都有链接,只是CUSTOMER
文件中包含了爱好代码
根据提供的信息,这应该是可行的:
LIST CUSTOMER WITH @HOBBYID "MyHobby" NAME @HOBBYID
或者,如果您想使用HOBBY
而不是@HOBBYID
来比较/选择:
LIST CUSTOMER WITH EVAL "TRANS(HOBBY,@HOBBYID,HOBBY,'X')" = "MyHobby" NAME @HOBBYID
当然,如果您在CUSTOMER
字典中创建了一个翻译字典项,可以用来代替“EVAL…”子句,那就更好了。这里的@CUSTOMERID是多值的;或者“HOBBY”文件的结构如何允许您每个HOBBY有多个客户。另外,这是关于U2的UniJ的问题吗私人助理司机?如果是,请发送电子邮件u2askus@rs.com因为产品经理很想和您谈谈您对它的使用。谢谢!我真的很喜欢您在示例中使用的@filename
样式。我可能会建议使用@filename.dictname
结构,这对任何TRANS-type字典都很有用。我喜欢@CUSTOMER.ID
和@CUSTOME>R.NAME
用于您上面使用的示例。它可以立即清楚地表明它是一个TRANS类型,它从哪个文件访问数据,以及该文件的属性是什么。您好,rbl,我的答案是在他们进行澄清编辑之前。如果您查看问题历史记录,您将看到结构与之前略有不同。请注意ker建议@HOBBYID是多值的,所以TRANS不适用于该字段。不过,在他们的具体案例中,“虚拟属性”是什么意思还不清楚,所以澄清这一点可能会再次改变答案。嘿,伙计们,很抱歉这个问题不清楚。我使用的是u2jpa驱动程序。我想知道当我“列出客户”时的查询,它可以向我返回客户信息(@CUSTOMERID,NAME,@HOBBYID,HOBBY)。@Dan McGrath,无意冒犯,我看不到历史。我使用的是universe,而不是unidata,因此可能TRANS函数在那里有所不同,但在universe上,它在多值字段上工作得很好。