我有一个表(Oracle数据库),如下所示:
CREATE TABLE example
(
idEx INTEGER,
idAdh INTEGER,
date DATE,
PRIMARY KEY (idEx, idAdh)
)
我在Netbeans中生成了相应的类,我为这个表创建了两个类:Example.java
和ExampleId.java
,最后一个包含我的主键的两个值。
现在让我说我在这里有一些记录,我想只使用主键的一个值(例如idEx
)来删除一个,这也是唯一的。所以首先我需要get
那一行,但我找不到办法做到这一点。是否可以做这样的事情?
Example ex = (Example) session.get(Example.class, new ExampleId(?, idEx));
我需要一些东西来替换那个充当通配符的?
。
或许这绝对不是要走的路,在这种情况下,我真的很感激一些建议。
答案 0 :(得分:3)
您应该能够通过HQL查询获取ex
。
答案 1 :(得分:1)
没有HQL / JPQL / Criteria查询,没有办法得到这个,这是有充分理由的。
get
方法返回单个对象并自动生成select * from table where key = :key
之类的查询。
您可以保证此查询只返回一行的唯一方法是指定整个键。如果您没有可用的完整PK对象,则查询将返回列表对象,此时get
不再合适。