однонаправленное отображение fun findByPincode(pincode: Int) : List<Address>
работает нормально, так как это в моем классе данных, но когда я пытаюсь получить данные, написав пользовательскую функцию, такую как fun findByCustomerId(customerId: Int) : List<Address>
не работает. Я работал в двухстороннем картографировании. Я что-то здесь скучаю? Мой класс данных, репозиторий и контроллер следующие.
@Entity
data class Customer(@Id @GeneratedValue var id: Long,
var firstName: String,
var lastName: String,
var phone: Long,
var email: String,
@OneToMany @JoinColumn(name = "customer_id") @Column(nullable = true) var address: List<Address>?)
@Entity
data class Address(@Id @GeneratedValue var id: Long,
var street: String,
var city: String,
var district: String,
var state: String,
var pincode: Int)
interface AddressRepository: JpaRepository<Address, Long> {
fun findByPincode(pincode: Int) : List<Address>
fun findByCustomerId(customerId: Int) : List<Address>// This Line is causing following error
}
@RestController
class CustomerController(@Autowired private val customerRepository: CustomerRepository) {
@GetMapping("/api/v1/customers")
fun getCustomers() = customerRepository.findAll()
@PostMapping("/api/v1/customers")
fun saveCustomer(@RequestBody customer: Customer) = customerRepository.save(customer)
}
Когда я добавляю строку выше, я получаю следующую ошибку
Error creating bean with name 'addressRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.example.repository.AddressRepository.findByCustomerId(int)! No property customerId found for type Address!
Адрес контроллера
@RestController
class AddressController(@Autowired private var addressRepository: AddressRepository) {
@GetMapping("/api/v1/{cid}/address")
fun getAddressByUserId(@PathVariable cid: Int) = addressRepository.findByPincode(cid)
}
Редактировать 1: Рабочий код Но возможно ли это сделать из одностороннего отображения ??
@Entity
data class Customer(@Id @GeneratedValue var id: Long,
var firstName: String,
var lastName: String,
var phone: Long,
var email: String,
@OneToMany @JoinColumn(name = "customer_id") @Column(nullable = true) var address: List<Address>?)
@Entity
data class Address(@Id @GeneratedValue var id: Long,
var street: String,
var city: String,
var district: String,
var state: String,
var pincode: Int,
@ManyToOne(fetch = FetchType.LAZY) @JsonIgnore var customer: Customer)
Кажется, есть только один способ работы, который одновременно отображение пути.