Могу ли я удалить весь раздел Кассандры с помощью CrudRepository только на основе ключа раздела? - PullRequest
0 голосов
/ 25 сентября 2018

В основном у меня есть эта таблица:

CREATE TABLE experiment(
 experimentid varchar,
 description text,
 rt float,
 intensity float,
 mz float,
 identifier text,
 chemical_formula text,
 filename text,
 PRIMARY KEY ((experimentid),description, rt, intensity, mz, identifier, chemical_formula, filename)
);

с Experiment.java

@Table(name= "experiment")
public class Experiment implements Serializable{

@PrimaryKey
private ExperimentKey experimentKey;

public ExperimentKey getExperimentKey() {
    return experimentKey;
}
public void setExperimentKey(ExperimentKey experimentKey) {
    this.experimentKey = experimentKey;
}
}

и ExperimentKey.java

@PrimaryKeyClass
public class ExperimentKey implements Serializable {

@PrimaryKeyColumn(name = "experimentid",ordinal = 0,type = PrimaryKeyType.PARTITIONED)
@CassandraType(type=DataType.Name.VARCHAR)
private String experimentid;
@PrimaryKeyColumn(name = "description",ordinal = 1)
@CassandraType(type=DataType.Name.VARCHAR)
private String description;
@PrimaryKeyColumn(name = "rt",ordinal = 2)
@CassandraType(type=DataType.Name.FLOAT)
private Float rt;
@PrimaryKeyColumn(name = "intensity",ordinal = 3)
@CassandraType(type=DataType.Name.FLOAT)
private Float intensity;
@PrimaryKeyColumn(name = "mz",ordinal = 4)
@CassandraType(type=DataType.Name.FLOAT)
private Float mz;
@PrimaryKeyColumn(name = "identifier",ordinal = 5)
@CassandraType(type=DataType.Name.VARCHAR)
private String identifier;
@PrimaryKeyColumn(name = "chemical_formula",ordinal = 6)
@CassandraType(type=DataType.Name.VARCHAR)
private String chemical_formula;
@PrimaryKeyColumn(name = "filename",ordinal = 7)
@CassandraType(type=DataType.Name.VARCHAR)
private String filename;

//getters and setters

public ExperimentKey(){

}
}

и в основном я хочу реализоватьзапрос ниже через crudrepository:

Delete * from experiment where experimentid='(something)';

Я знаю, что я могу ВЫБРАТЬ, основываясь только на ключе раздела с findAllByExperimentKey_Experimentid (эксперимент), но возможно ли сделать то же самое с удалением?Я попытался deleteAllByExperimentKey_Experimentid (Experimentid), но получаю ошибку:

Не удалось создать экземпляр void с помощью конструктора NO_CONSTRUCTOR с аргументами

EDIT 1

Хорошо, так что это мой ExperimentRepo.java

public interface ExperimentRepo extends CrudRepository<Experiment,ExperimentKey>{
     public void deleteAllByByExperimentKey_Experimentid(String expid);
}

, а это мой ExperimentServiceImpl.java

@Service
public class ExperimentServiceImpl implements ExperimentService{

private ExperimentRepo experimentRepo;

@Autowired
public ExperimentServiceImpl(ExperimentRepo experimentRepo){
    this.experimentRepo=experimentRepo;
}
@Override
public void deleteAllExperimentByExperimentid(String expid){
    MapId id = id("experimentid", expid);
    experimentRepo.deleteAllByByExperimentKey_Experimentid(expid);
}

Не уверен, где мне следует использовать id идентификатора карты = id ("Experimentid", ).

...