我有一个具有不同字段的实体:
@Entity
public class TestEntity {
private int id;
private String name;
private String description;
@ElementCollection
private Map<String, String> parameter = new HashMap<>();
}
结果表如下: TestEntity(id,name,description) TestEntity_parameter(TestEntity_id,parameter,parameter_KEY)
现在我想为这个TestEntity创建一个命名查询,检查是否存在value_KEY值&#34; test&#34;并使用参数:parameter。
我试过这样的事情:
select te from TestEntity te join TestEntity_parameter tep where tep.parameter_KEY = test AND tep.parameter = :parameter
但是当我尝试部署时,我收到了错误。
我对hibernate和java ee相对较新。也许我的方法是错误的但我没有找到任何如何使用命名查询访问地图的字段,因为它为该地图创建了一个新表。所以我认为我需要加入这些表格。
希望你们能帮助我:) 非常感谢:)
问候 西蒙
答案 0 :(得分:2)
您可以使用以下查询。
SELECT te FROM TestEntity te INNER JOIN te.parameter p WHERE KEY(p) = :YOUR_KEY
AND VALUE(p) = :YOUR_VALUE