【发布时间】:2019-08-20 19:42:02
【问题描述】:
我的存储库方法查询无法解析 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,并且在谈论图形分层时具有特定含义。
【问题讨论】:
-
这与hibernate使用的一些命名策略有关。您可以查看各种命名策略以选择强制列名。
标签: spring hibernate jpa spring-data-jpa spring-data