我有一个复合主键
public class MainPk{
private int keyOne;
private int keyTwo;
// getters and setters
}
我只设置了KeyOne但是在查询中搜索了两个值
select * from ..... where keyOne = ? and KeyTwo = ?
无论如何只搜索一个?我知道我可以使用标准或查询,我问这样是否可行
答案 0 :(得分:1)
问题是你可能正在做类似以下的事情:
MainPk id = new MainPk();
id.setKeyOne( someValue );
List<YourEntity> results = session
.createQuery( "FROM YourEntity e WHERE e.id = :id" )
.setParameter( "id", id )
.getResultList();
您可以通过显式查询复合ID的单个值来重建查询并完成您要查找的内容。 Hibernate不知道是否将复合中的空值转换为文字null
,或者它是否忽略。
List<YourEntity> results = session
.createQuery( "FROM YourEntity e WHERE e.id.keyOne = :keyOne" )
.setParameter( "keyOne", someValue )
.getResultList();
答案 1 :(得分:0)
您可以搜索任何财产。为什么不使用Criteria and Restriction类?它们允许您根据任何属性轻松查询。查看Hibernate的文档:
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html