Hibernate - 获取只有一个复合主键值的行?

时间:2011-12-16 22:11:03

标签: java oracle hibernate

我有一个表(Oracle数据库),如下所示:

CREATE TABLE example
(
    idEx INTEGER,
    idAdh INTEGER,
    date DATE,
    PRIMARY KEY (idEx, idAdh)
)

我在Netbeans中生成了相应的类,我为这个表创建了两个类:Example.javaExampleId.java,最后一个包含我的主键的两个值。

现在让我说我在这里有一些记录,我想只使用主键的一个值(例如idEx)来删除一个,这也是唯一的。所以首先我需要get那一行,但我找不到办法做到这一点。是否可以做这样的事情?

Example ex = (Example) session.get(Example.class, new ExampleId(?, idEx));

我需要一些东西来替换那个充当通配符的?

或许这绝对不是要走的路,在这种情况下,我真的很感激一些建议。

2 个答案:

答案 0 :(得分:3)

您应该能够通过HQL查询获取ex

答案 1 :(得分:1)

没有HQL / JPQL / Criteria查询,没有办法得到这个,这是有充分理由的。

get方法返回单个对象并自动生成select * from table where key = :key之类的查询。

您可以保证此查询只返回一行的唯一方法是指定整个键。如果您没有可用的完整PK对象,则查询将返回列表对象,此时get不再合适。