Как правильно использовать findBySomeOtherId не findById в данных весны jpa? - PullRequest
0 голосов
/ 11 октября 2019

Я работаю над загрузочным проектом Spring с использованием данных весны jpa (MYSQL). Когда я достигаю этой конечной точки, http://localhost:8080/admin/interviews/101 я получаю эту ошибку

{
    "timestamp": "2019-10-11T13:45:37.111+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Parameter value [101] did not match expected type [com.yash.arci.model.Interviews (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [101] did not match expected type [com.yash.arci.model.Interviews (n/a)]",

    "trace": "org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [101] did not match expected type [com.yash.arci.model.Interviews (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [101] did not match expected type [com.yash.arci.model.Interviews (n/a)]\r\n\tat org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible

Это - интервьюСтатус класса

@Entity
@Table(name ="interview_status" )
public class InterviewStatus implements Serializable {


private static final long serialVersionUID = -6353284727527331855L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name ="interviewId",insertable = false, updatable = false)
private Interviews interviewId;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name ="statusId",insertable = false, updatable = false)
private Status statusId;
..........
}



@Repository
public interface InterviewStatusRepository extends 
JpaRepository<InterviewStatus, Integer> {

InterviewStatus findByInterviewId(Integer interviewId);
}

Я хочу запись на основе интервью. Я уже могу получить на основе первичного ключа, но я хочу его на основе идентификатора интервью, у меня есть столбец интервью в таблице интервью.

1 Ответ

0 голосов
/ 11 октября 2019

Пожалуйста, используйте это InterviewStatus findByInterviewId(Interviews interviewId);, когда для получения идентификатора интервью используется Interviews findById(Long id).

Из-за конфликта типов данных можно передавать в качестве параметра ожидаемый тип данных. поэтому он ожидает интервью не целое число, но у вас есть целое число. в этом случае вы получаете интервью, используя целое число, а затем передаете полученные интервью как параметр.

...