2016-12-07 21 views
0

私はロードリポジトリを持っています。Spring Data JPA削除子エンティティ

@Transactional 
public interface MyLoadRepository extends CrudRepository<ParentEntity, Serializable> { 
} 

次に、私のParentEntityです。

@MappedSuperclass 
public class ParentEntity { 
    @Id 
    @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    @Column(name = "id", unique = true) 
    private String uuid; 

    public String getUuid() { 
     return uuid; 
    } 

    public void setUuid(String uuid) { 
     this.uuid = uuid; 
    } 

} 

次に、複数の子エンティティがあります。

@Entity 
    @Table(name = "EntityA") 
    public class EntityA extends ParentEntity { 
    } 



    @Entity 
    @Table(name = "EntityB") 
    public class EntityB extends ParentEntity { 
    } 

Ques:これらのエンティティをリポジトリで個別に削除したいとします。

このような場合はどうすればいいですか?

@Autowired 
private MyLoadRepository repository; 

、その後repository.deleteAll() 私は、リポジトリは、エンティティ(それobiviouslyではない)ではないというエラーが発生します。 ここでは、何らかの条件に基づいて、entityAまたはentityBのデータを完全に削除したいとします。どうやってやるの ?

答えて

0

エンティティごとにリポジトリを作成し、非エンティティクラスには作成しないでください。

だから、あなたのケースのために、あなたは2つのリポジトリクラス

サービスクラスで今
@Transactional 
public interface EntityARepo extends CrudRepository< EntityA, String> { 
} 

@Transactional 
public interface EntityBRepo extends CrudRepository< EntityB, String> { 
} 

あなたは

@Autowired 
private EntityARepo repoA; 

@Autowired 
private EntityBRepo repoB; 

を行うことができます必要があると、あなたはあなたの条件に基づいてメソッドを削除する呼び出すことができます

repoA.deleteAll() 

または

repoB.deleteAll() 
0

条件に基づいてエンティティを取得する必要があります。たとえば、EntityAに主キーuuidがある場合は、uuidでEntityAを見つけてEntityAを削除する必要があります。

EntityA entityA = entityARepo.findOne(uuid); repository.delete(entityA);

エンティティBエンティティB =エンティティBRepo.findOne(uuid); repository.delete(entityB);

関連する問題