私はspringMVCアプリケーションで抽象サービスを作成しようとしています。私のデータは、私の層を通って完璧*流れますが、私の永続化(抽象化)、私のデータベースを更新/削除/保存する方法を見つけることができなかった、これらはクラスである:サービス抽象化springMVC
abstract class BaseServiceImpl<T, ID extends Serializable>
implements BaseService<T, ID> {
protected abstract BaseRepository<T, ID> getRepository();
private BaseRepository<T, ID> repository;
public BaseServiceImpl(BaseRepository<T, ID> repository){
this.repository = repository;
}
public List<T> findAll(){
return getRepository().findAll();
}
public T find(ID id){
return getRepository().findOne(id);
}
public T save(T persisted){
return this.repository.save(persisted);
}
public void delete(ID id){
getRepository().delete(id);
}
public long count(){
return getRepository().count();
}
public boolean exists(ID id){
return getRepository().exists(id);
}
}
// ---
@Service
public class MedicineServiceImpl
extends BaseServiceImpl<Medicine, Integer>
implements MedicineService {
@Autowired
private MedicineRepository repository;
@Autowired
public MedicineServiceImpl(MedicineRepository repository) {
super(repository);
}
@Override
public BaseRepository<Medicine, Integer> getRepository() {
return repository;
}
}
// -
@MappedSuperclass
abstract class BaseDomain {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
// -
@Entity
@Table(name = "medicines")
public class Medicine
extends BaseDomain implements Serializable{
@NotNull
private String name;
private String description;
private String purpose;
@Column(name = "active_principle")
private String activePrinciple;
@Column(name = "therapeutic_class")
private String therapeuticClass;
@Column(name = "ean_code")
private String eanCode;
@Column(name = "ms_code")
private String msCode;
@Column(name = "avisa_warning")
private String anvisaWarning;
@Column(name = "lab_name")
private String labName;
@Column(name = "lab_phone")
private String labPhone;
@NotNull
private String contraindication;
public Medicine() {
}
}
()のServlet.service:0
// - -
@NoRepositoryBean
public interface BaseRepository<T,ID extends Serializable>
extends Repository<T,ID> {
List<T> findAll();
long count();
void delete(ID id);
T save(T s);
T findOne(ID id);
boolean exists(ID id);
void delete(T deleted);
}
//
@Repository
public interface MedicineRepository
extends BaseRepository<Medicine, Integer>{
}
私は500ステータスエラーを持って、私のtocatlogは、次のようなメッセージを示しています。SEVERE
をサーブレット[TavalendoDispatcherServlet]がパス[/ tavalendo]のコンテキストで例外をスローしました[リクエスト処理に失敗しました。ネストされた例外はorg.springframework.beans.NotReadablePropertyExceptionです:Beanクラス[java.util.LinkedHashMap]のプロパティ 'id'が無効です:フォールバックアクセス時にプロパティのフィールドを見つけることができませんでした!]根本的な原因で org.springframework.beans.NotReadablePropertyException: Beanクラス[java.util.LinkedHashMap]のプロパティ 'id'が無効です:フォールバックアクセス時にプロパティのフィールドを見つけることができませんでした。 org.apache.catalina.valvesでorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) でorg.springframework.data.util.DirectFieldAccessFallbackBeanWrapper.getPropertyValue(DirectFieldAccessFallbackBeanWrapper.java:56) で。 AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util。 net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads。 java.lang.Thread.runでTaskThread $ WrappingRunnable.run(TaskThread.java:61) (Thread.java:745)
誰もが起こったかを説明できますか?
医学はIDフィールドを持っていますか?あなたは医学とMedicineRepositoryを投稿できますか? – Manu
あなたの '/ tavalendo' JSPを見せてください – dit
私の問題を理解するのに役立つコードをいくつか投稿しました@Manu – davidwillianx