我对当前项目使用两个表格(它肯定会增长)。使用休眠时的困境
首先表有像列的负荷即
id|name|surname|age|token |currentpackage|difference
1 |me | you | 22|xc2e2144124sd |100 |0
第二表:
id|mirror|token| connsize|price
81|server|xc2e2144124sd|100mbps |1000
这些表是满的数据。表1中有一些行与表2中的行有相同的标记值。
我GOOGLE了解决方案相当了很多,这是我找到了最好的:
http://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example/ 和 http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-one-to-one-1.html
但我不认为这些适用于我的情况下(或他们) 。在这些例子中,关系是增量式的关键,我的令牌只是它在数据库中的方式。
我的最终目标是能够计算currentpackage和价格
,你会推荐什么这之间的区别?我正在使用java /休眠/弹簧
是否有任何其他方式告诉hibernate链接其他主键的其他东西? 一些自定义键如表1中的标记?令牌是表1和表2之间的某种关系。它的很多(table1)到一个(table2)。
最新的更新
我试图通过查询这些。减去两列做到这一点:
UPDATE packages tl
SET difference = (select (t2.price-t1.currentpackage)
from packages t1, mirrors t2
where t2.token= t1.token)
我得到这个错误:
ERROR: more than one row returned by a subquery used as an expression
我必须有尝试了很多选择,但都没有工作
试过这个,以及相同的结果:
UPDATE packages X
SET difference = (select Y.price-X.currentpackage
FROM packages X
LEFT OUTER JOIN mirrors Y
ON Y.token = X.token)
这似乎正是我要找的,但我不能将其集成到我的查询:
Subtract Values from Two Different Tables
您的意思是在两个表中都没有主键?为了能够使用hibernate,主键必须在所有涉及的表中。 – Bhushan 2011-05-12 21:00:14
@Bhushan当然在这两个表中都有主键,但它们并不代表什么,因为它们彼此不同,唯一的常见列值是标记。 – London 2011-05-12 21:02:49