【发布时间】:2016-05-05 09:48:25
【问题描述】:
我正在学习 bootspring。
findByDate(int date); 过去一直工作,直到我将 int Date 移到内部类中。
现在我可以保存新条目,但无法按日期检索它们
我需要改变什么?
@Transactional
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, Long> {
public ExpirationDTO findByDate(int date);
}
和
@Embeddable
public static class IdKey implements Serializable{
@NotNull
int date;
@ManyToOne
ProductDTO product;
public IdKey(){
}
//setters and getters
}
@EmbeddedId
private IdKey id;
@NotNull
int units;
public ExpirationDTO(){
}
//setters and getters
}
抛出此异常:
org.springframework.data.mapping.PropertyReferenceException: No property date found for type ExpirationDTO!
【问题讨论】:
-
您的数据库中的日期是哪种属性?因为你有
findByDate(String date)和一个字符串,在IdKey中作为int。你有什么例外吗?您能否更具体地说明什么不起作用。 -
你是对的。它应该是 int 而不是 String 但我不是问题。那个错误很好用。例外是:
org.springframework.data.mapping.PropertyReferenceException: No property date found for type ExpirationDTO! -
将
int Date添加到您的ExpirationDTO因为您的findByDate会返回一个ExpirationDTO 对象。 -
不起作用抛出:
org.hibernate.MappingException: Repeated column in mapping for entity: app.model.data.ExpirationDTO column: date (should be mapped with insert="false" update="false"),因为日期在复合键中重复。 -
如果将
insert="false" update="false"添加到日期列会发生什么?
标签: java spring hibernate jpa spring-data-jpa