【发布时间】:2021-05-07 14:45:16
【问题描述】:
所以我一直在努力解决这个错误。所以我得到了一个非常标准的错误,我明白它告诉我什么我只是不明白它是如何得到这个错误的。所以这里是错误
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property stored found for type StorageItemEntity! Did you mean 'storedIn'?
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:90) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:437) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:413) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:366) ~[spring-data-commons-2.4.8.jar:2.4.8]
at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) ~[na:na]
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:348) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:331) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:249) ~[spring-data-commons-2.4.8.jar:2.4.8]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[na:na]
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:250) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:383) ~[spring-data-commons-2.4.8.jar:2.4.8]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[na:na]
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:384) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:95) ~[spring-data-commons-2.4.8.jar:2.4.8]
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:89) ~[spring-data-jpa-2.4.8.jar:2.4.8]
... 62 common frames omitted
那么标准错误对吗?好的,所以它告诉我没有为我的实体找到“存储”的属性。有道理,但我似乎无法理解为什么,因为我没有定义存储。好吧,这是一个搞砸一切的查询
@Repository
public interface StorageItemDao extends JpaRepository<StorageItemEntity, Long> {
// All other methods omitted for sake of keeping it short
public List<StorageItemEntity> findAllByStoredIn(StorageType storedIn);
}
这里是 StorageItemEntity 类
@Entity
@Table(name = "storage_item")
public class StorageItemEntity implements Serializable{
/**
*
*/
private static final long serialVersionUID = -5373908574936516693L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@NotEmpty(message = "Storage item name can not be empty")
@Size(max = 100, message = "Storage item name can not exceed 100 characters")
@Column(name = "name")
private String name;
@Range(min = 0, message = "Amount in storage can not be less than 0")
@Column(name = "amount")
private int amount;
@Range(min = 0, message = "Amount expected in storage per week can not be less than 0")
@Column(name = "amount_expected")
private int amountExpected;
@NotNull(message = "Storage in type can not be empty")
@Column(name = "stored_in")
private StorageType storedIn;
@Size(max = 500, message = Constants.ADDITIONAL_INFO_EXCEED)
@Column(name = "additional_info")
private String additionalInfo;
@NotNull(message = "You need to have a vendor associated to this item")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "vendor_id", referencedColumnName="id")
private VendorEntity vendor;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "type_of_storage_id", referencedColumnName="id")
private TypeOfStorageEntity typeOfStorage;
// All getters, setters, and constructors are omitted
}
我还想指出,StorageType 是一个非常标准的枚举。这不是错误,但这是一个很好的说明,以防万一。那么,如果我从未在我的 JPA 方法中定义说存储,为什么我会得到“没有找到类型 StorageItemEntity 的属性‘存储’”?
谢谢
【问题讨论】:
-
您的
stored_in的列名称似乎是storedIn -
我同意这就是为什么我在 JPA 存储库中将我的函数命名为
findAllByStoredIn -
我猜问题是“findByStoredIn”中的“In”是query keyword
-
@samabcde 这实际上是一个非常好的观点。我没想到。是的,这绝对是原因
标签: java spring-boot jpa spring-data-jpa