Inheritance Spring批处理JPA继承
我试图解决一些问题,但没有成功:所以我来找你,以获得一些线索,以帮助我。我无法在spring batch datasource中正确保存和读取数据,而且它包含一些多态性 这里是上下文 从模型侧开始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 @
@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读取数据,但没有要获取的数据可以用我最喜欢的工具查看我表上的行蟾蜍:)确定将调查通用包装器。。。