Inheritance Spring批处理JPA继承

Inheritance Spring批处理JPA继承,inheritance,spring-data-jpa,spring-batch,Inheritance,Spring Data Jpa,Spring Batch,我试图解决一些问题,但没有成功:所以我来找你,以获得一些线索,以帮助我。我无法在spring batch datasource中正确保存和读取数据,而且它包含一些多态性 这里是上下文 从模型侧开始 @Data @MappedSuperclass public abstract class AbstractBaseDocument implements Serializable { } @Data @NoArgsConstructor @AllArgsConstructor @Builder @

我试图解决一些问题,但没有成功:所以我来找你,以获得一些线索,以帮助我。我无法在spring batch datasource中正确保存和读取数据,而且它包含一些多态性

这里是上下文

从模型侧开始

@Data
@MappedSuperclass
public abstract class AbstractBaseDocument implements Serializable {
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "MyTableA")
public class InscriptionDocument extends AbstractBaseDocument {
   // some attributes
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "MyTableB")
public class SaillieDocument extends AbstractBaseDocument {
   // some attributes
}
public interface AbstractBaseService<T extends AbstractBaseDocument, ID extends Serializable> {
    public abstract T saveAndFlush(T entity);
}

@Service
public abstract class AbstractBaseServiceImpl<T extends AbstractBaseDocument, ID extends Serializable>
        implements AbstractBaseService<T, ID> {

    private AbstractBaseRepository<T, ID> abstractBaseRepository;

    @Autowired
    public AbstractBaseServiceImpl(AbstractBaseRepository<T, ID> abstractBaseRepository) {
        this.abstractBaseRepository = abstractBaseRepository;
    }

    @Override
    public T saveAndFlush(T entity) {
        return (T) abstractBaseRepository.saveAndFlush(entity);
    }
}

public interface SaillieDocumentService extends AbstractBaseService<SaillieDocument, Serializable> {
}

@Service("saillieDocumentService")
public class SaillieDocumentServiceImpl extends AbstractBaseServiceImpl<SaillieDocument, Serializable>
        implements SaillieDocumentService {

    private SaillieDocumentRepository myDomainRepository;

    public SaillieDocumentServiceImpl(SaillieDocumentRepository myDomainRepository) {
        super(myDomainRepository);
    }

}

public interface InscriptionDocumentService extends AbstractBaseService<InscriptionDocument, Serializable> {
}

@Service("inscriptionDocumentService")
public class InscriptionDocumentServiceImpl extends AbstractBaseServiceImpl<InscriptionDocument, Serializable>
        implements InscriptionDocumentService {

    private InscriptionDocumentRepository myDomainRepository;

    public InscriptionDocumentServiceImpl(InscriptionDocumentRepository myDomainRepository) {
        super(myDomainRepository);
    }
}
@NoRepositoryBean
public interface AbstractBaseRepository<T extends AbstractBaseDocument, ID extends Serializable>
        extends JpaRepository<T, ID> {
}

public interface InscriptionDocumentRepository extends AbstractBaseRepository<InscriptionDocument, Serializable> {
}

public interface SaillieDocumentRepository extends AbstractBaseRepository<SaillieDocument, Serializable> {
}
来自服务方

@Data
@MappedSuperclass
public abstract class AbstractBaseDocument implements Serializable {
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "MyTableA")
public class InscriptionDocument extends AbstractBaseDocument {
   // some attributes
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "MyTableB")
public class SaillieDocument extends AbstractBaseDocument {
   // some attributes
}
public interface AbstractBaseService<T extends AbstractBaseDocument, ID extends Serializable> {
    public abstract T saveAndFlush(T entity);
}

@Service
public abstract class AbstractBaseServiceImpl<T extends AbstractBaseDocument, ID extends Serializable>
        implements AbstractBaseService<T, ID> {

    private AbstractBaseRepository<T, ID> abstractBaseRepository;

    @Autowired
    public AbstractBaseServiceImpl(AbstractBaseRepository<T, ID> abstractBaseRepository) {
        this.abstractBaseRepository = abstractBaseRepository;
    }

    @Override
    public T saveAndFlush(T entity) {
        return (T) abstractBaseRepository.saveAndFlush(entity);
    }
}

public interface SaillieDocumentService extends AbstractBaseService<SaillieDocument, Serializable> {
}

@Service("saillieDocumentService")
public class SaillieDocumentServiceImpl extends AbstractBaseServiceImpl<SaillieDocument, Serializable>
        implements SaillieDocumentService {

    private SaillieDocumentRepository myDomainRepository;

    public SaillieDocumentServiceImpl(SaillieDocumentRepository myDomainRepository) {
        super(myDomainRepository);
    }

}

public interface InscriptionDocumentService extends AbstractBaseService<InscriptionDocument, Serializable> {
}

@Service("inscriptionDocumentService")
public class InscriptionDocumentServiceImpl extends AbstractBaseServiceImpl<InscriptionDocument, Serializable>
        implements InscriptionDocumentService {

    private InscriptionDocumentRepository myDomainRepository;

    public InscriptionDocumentServiceImpl(InscriptionDocumentRepository myDomainRepository) {
        super(myDomainRepository);
    }
}
@NoRepositoryBean
public interface AbstractBaseRepository<T extends AbstractBaseDocument, ID extends Serializable>
        extends JpaRepository<T, ID> {
}

public interface InscriptionDocumentRepository extends AbstractBaseRepository<InscriptionDocument, Serializable> {
}

public interface SaillieDocumentRepository extends AbstractBaseRepository<SaillieDocument, Serializable> {
}
公共接口AbstractBaseService{
公共摘要T saveAndFlush(T实体);
}
@服务
公共抽象类AbstractBaseServiceImpl
实现AbstractBaseService{
私有AbstractBaseRepository AbstractBaseRepository;
@自动连线
公共AbstractBaseServiceImpl(AbstractBaseRepository AbstractBaseRepository){
this.abstractBaseRepository=abstractBaseRepository;
}
@凌驾
公共T保存和刷新(T实体){
return(T)abstractBaseRepository.saveAndFlush(entity);
}
}
公共接口DocumentService扩展了AbstractBaseService{
}
@服务(“帆船服务”)
公共类SaillieDocumentServiceImpl扩展了AbstractBaseServiceImpl
实现文档服务{
私有文档库myDomainRepository;
公共SaillieDocumentServiceImpl(SaillieDocumentRepository myDomainRepository){
超级(myDomainRepository);
}
}
公共接口DocumentService扩展了AbstractBaseService{
}
@服务(“服务”)
公共类DocumentServiceImpl扩展了AbstractBaseServiceImpl
实现文档服务{
私有文档库myDomainRepository;
公共题词DocumentServiceImpl(题词DocumentRepository myDomainRepository){
超级(myDomainRepository);
}
}
从存储库端

@Data
@MappedSuperclass
public abstract class AbstractBaseDocument implements Serializable {
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "MyTableA")
public class InscriptionDocument extends AbstractBaseDocument {
   // some attributes
}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "MyTableB")
public class SaillieDocument extends AbstractBaseDocument {
   // some attributes
}
public interface AbstractBaseService<T extends AbstractBaseDocument, ID extends Serializable> {
    public abstract T saveAndFlush(T entity);
}

@Service
public abstract class AbstractBaseServiceImpl<T extends AbstractBaseDocument, ID extends Serializable>
        implements AbstractBaseService<T, ID> {

    private AbstractBaseRepository<T, ID> abstractBaseRepository;

    @Autowired
    public AbstractBaseServiceImpl(AbstractBaseRepository<T, ID> abstractBaseRepository) {
        this.abstractBaseRepository = abstractBaseRepository;
    }

    @Override
    public T saveAndFlush(T entity) {
        return (T) abstractBaseRepository.saveAndFlush(entity);
    }
}

public interface SaillieDocumentService extends AbstractBaseService<SaillieDocument, Serializable> {
}

@Service("saillieDocumentService")
public class SaillieDocumentServiceImpl extends AbstractBaseServiceImpl<SaillieDocument, Serializable>
        implements SaillieDocumentService {

    private SaillieDocumentRepository myDomainRepository;

    public SaillieDocumentServiceImpl(SaillieDocumentRepository myDomainRepository) {
        super(myDomainRepository);
    }

}

public interface InscriptionDocumentService extends AbstractBaseService<InscriptionDocument, Serializable> {
}

@Service("inscriptionDocumentService")
public class InscriptionDocumentServiceImpl extends AbstractBaseServiceImpl<InscriptionDocument, Serializable>
        implements InscriptionDocumentService {

    private InscriptionDocumentRepository myDomainRepository;

    public InscriptionDocumentServiceImpl(InscriptionDocumentRepository myDomainRepository) {
        super(myDomainRepository);
    }
}
@NoRepositoryBean
public interface AbstractBaseRepository<T extends AbstractBaseDocument, ID extends Serializable>
        extends JpaRepository<T, ID> {
}

public interface InscriptionDocumentRepository extends AbstractBaseRepository<InscriptionDocument, Serializable> {
}

public interface SaillieDocumentRepository extends AbstractBaseRepository<SaillieDocument, Serializable> {
}
@NoRepositoryBean
公共接口数据库
扩展JPA假设{
}
公共接口DocumentRepository扩展了AbstractBaseRepository{
}
公共接口DocumentRepository扩展了AbstractBaseRepository{
}
最后,我尝试将文档保存如下

@Autowired
私人服务;
@凌驾

公开无效写入(列表
我无法正确保存和读取数据
:您能详细说明一下吗?您是否有错误或stacktrace要共享?或者工作完成时没有错误,但数据没有保存到数据库中?请提供一个复制问题的列表,以便能够有效地帮助您。对于泛型,我不确定您是否可以拥有一个泛型编写器u描述。您可以创建一个通用包装器服务,根据传递对象的类型委托给正确的服务。然后在编写器中使用该包装器服务。关于数据,事实上我有两个步骤。第一个步骤从表a读取数据,然后将数据写入表B。第二个步骤必须从表B读取数据,但没有要获取的数据可以用我最喜欢的工具查看我表上的行蟾蜍:)确定将调查通用包装器。。。