- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个实体,并且想要查找具有相同属性集的任何实体。
@Entity
public class PropertyResource {
@ElementCollection
@MapKeyColumn(name = "property_key")
@Column(name = "property_value")
@CollectionTable(name = "resource_properties")
private Map<String, String> properties = Maps.newHashMap();
...
}
这是我使用条件生成器的实现:
public List<PropertyResource> findDuplicateProperties(PropertyResource resource) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<PropertyResource> query = builder.createQuery(PropertyResource.class);
Root<PropertyResource> resourceRoot = query.from(PropertyResource.class);
List<Predicate> clauses = Lists.newArrayList();
for (Entry<String, String> entry : resource.getProperties().entrySet()) {
MapJoin<PropertyResource, String, String> properties = resourceRoot.joinMap("properties", JoinType.INNER);
clauses.add(builder.and(builder.equal(properties.key(), entry.getKey()), builder.equal(properties.value(), entry.getValue())));
}
if (!resource.isNew()) {
clauses.add(builder.notEqual(resourceRoot.get("id"), resource.getID()));
}
clauses.add(builder.equal(resourceRoot.get("type"), resource.getType()));
return em.createQuery(query.where(clauses.toArray(new Predicate[clauses.size()]))).getResultList();
}
我正在对每个属性进行额外的连接。具有相同属性键的相同类型的属性和资源并不多。这在 h2 中效果很好,它会产生以下结果:
select ...
from resource_table propertyre0_
inner join resource_properties properties1_ on propertyre0_.entid=properties1_.PropertyResource_entid
inner join resource_properties properties2_ on propertyre0_.entid=properties2_.PropertyResource_entid
where properties1_.property_key=? and properties1_.property_value=?
and properties2_.property_key=? and properties2_.property_value=?
and propertyre0_.entid<>4 and propertyre0_.resource_type=?
对于 Oracle,我得到了这个:
select ...
from resource_table propertyre0_
where propertyre0_.entid<>230 and propertyre0_.resource_type=?
我的查询有什么问题吗?
OBS:差点忘了。 Hibernate 版本为 4.1.9.Final。
最佳答案
这是一个用户错误的情况(请更换用户)。我的问题是发送到 Oracle 案例的属性映射确实是空的。代码做了唯一正确的事情;它没有创建任何连接。
关于java - 无法在 Oracle 中标准搜索匹配的映射列 (MapKeyColumn),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16169502/
我正在从 hibernate 4.2.5.Final 升级到 4.3.6.Final,4.3.6 hibernate 库导致 mysql 未知列类型异常。由于我无法完整展示我公司的生产代码,因此简化了
我有这个实体,并且想要查找具有相同属性集的任何实体。 @Entity public class PropertyResource { @ElementCollection @MapKe
我有一个双向 map 映射。阅读有效,但 Hibernate 不存储映射键列。当我 checkin 调试器时,一切都已按预期设置。 INSERT 查询是: insert into rel_custFi
这是我的sql表结构, create table TBL_DEPARTMENT_ONE( ID integer primary key generated always as identity
实体引用情况如下: Collision -> CollisionStatus CollisionWorkgroup(加入实体) -> Workgroup 碰撞.java: @Entity @Tabl
我有两个实体: @Entity Article { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Lo
我正在为实习创建一个 JPA 2.0 注释合规性工具包。现在,我想知道何时需要 @MapKeyTemporal 注释以及何时它是可选的... 我知道当您使用@MapKeyColumn 定义映射键的列时
我是一名优秀的程序员,十分优秀!