My Repository Method Query无法解析位于OrderBy
之后的属性名称,但如果它位于findBy
或findAllBy
之后,则可以解析。我的实体中给我带来问题的属性是zIndex
实体类
@Entity
public class DisplayLayer
{
@Id
@Column(name="DISPLAY_LAYER_ID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="DISPLAY_CONTAINER_ID")
private DisplayContainer displayContainer;
@Column(name="NAME")
private String name;
@Column(name="Z_INDEX")
private Long zIndex;
@Column(name="DESCRIPTION")
private String description;
// Getters & Setters
}
存储库类
public interface DisplayLayerRepository extends BaseRepository<DisplayLayer, Long>
{
// This one method query works just fine
public List<DisplayLayer> findByZIndex(Long pZIndex);
// These two throw the same error:
// Unable to locate Attribute with the the given name [ZIndex]
//
// public List<DisplayLayer> findAllByOrderByZIndexAsc();
// public List<DisplayLayer> findByDisplayContainerIdOrderByZIndexAsc(Long pDisplayLayerId);
}
因此,在我的第一个方法查询中,当不使用OrderBy
时,它正确地将其解析为[zIndex]
,但是当它遵循OrderBy
时,由于某种原因,它将z:[ZIndex]
大写。
这是一个已知的问题,还是我做错了什么?
编辑让我觉得解析器可能存在缺陷的地方是,如果我在实体中将zIndex
更新为IndexZ
,然后将查询方法从OrderByZIndex
更改为OrderByIndexZ
,一切正常。
这个解决方案并不理想,因为数据库表是Z_INDEX
,并且在讨论图形分层时具有特定的含义。
您可以在查询中使用JpaSort。就像你的情况一样,它看起来是这样的:
Sort sort = JpaSort.unsafe(Sort.Direction.ASC, "zIndex");
List<DisplayLayer> zIndexes = displayLayerRepository.findByZIndex(pZIndex, sort);
您在Repository中的查询将如下所示:
public List<DisplayLayer> findByZIndex(Long pZIndex, Sort sort);
是的,有一个错误,但有一个简单的解决方法,请尝试:
displayLayerRepository.findAll(Sort.by(Sort.Order.desc("zIndex").ignoreCase()));
我想DisplayLayerRepository扩展了JpaRepository。
在findBy方法中使用参数时,情况类似。在存储库中定义空方法:
public List<DisplayLayer> findByDisplayContainerId(Long pDisplayLayerId, Sort sort);
然后您可以通过以下方式调用:
displayLayerRepository.findByDisplayContainerId(1L, Sort.by(Sort.Order.desc("zIndex").ignoreCase()));
我正在尝试执行一个非常基本的查询,并收到org.hibernate.QueryException:无法解析属性。这是我的实体: @table(name="pm_screenconfiguration")公共类ScreenConfiguration扩展了PubleMovilEntity{ } 这是我的问题: 我真的搞不懂。Im使用MySql,所有列都具有相同的实体名称。 谢谢
问题内容: 在Swift中,我尝试执行以下操作: Xcode 在方法中在线上报告错误。 为什么?如果将结构更改为类,则不会出错。 问题答案: 如果要修改结构的属性,请将该函数标记为mutating。
我正在尝试查询hibernate表中的RunEntity。查询中的第一个where子句搜索testName=传递值testName的RunEntities。在stacktrace中,它提到在RunEntity中找不到testname类型的匹配项,但是RunEntity对象显式地有一个名为testname的字符串,带有setter和getter以及@Column符号。 表格设置 查询 实体 stac
正如前面的例子所示,属性表达式只能引用托管实体的直接属性。在查询创建的时候你已确认解析的属性是托管实体类的属性之一。然而你也能通过遍历嵌套属性来定义约束。假设一个Person拥有含ZipCode的Address。在这个方法名称中 List<Person> findByAddressZipCode(ZipCode zipCode); 创建了一个属性遍历x.address.zipCo
本文向大家介绍.NET中的属性用法分析,包括了.NET中的属性用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了.NET中的属性用法。分享给大家供大家参考。具体分析如下: 1.What?什么是属性 属性是对字段的封装。当类中有了一个字段以后,为了控制这个字段对外的一些表现(例如可访问性,是只读?只写?或者对自读赋值做一些必要的验证等等)我们把这个字段私有化(private),同时留出