私はブーツスプリングで学んでいます。
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!
リポジトリでは、Longの代わりに埋め込みキークラスの名前を含める必要があります。これを試してください(テストされていません):
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, IdKey> {
public List<ExpirationDTO> findByIdDate(int date);
}
その後、findBy
Id
はあなたのEmbeddedId
であり、Date
は埋め込み可能クラスの属性です。そしてもう1つ:埋め込みキーの一部のみを使用する場合、1つの結果しか期待できない...
埋め込みキークラスの名前をリポジトリに含め、アンダースコア(_)も追加する必要があります
以下でテスト済み:
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, IdKey> {
public List<ExpirationDTO> findByIdKey_Date(Date date);
}