пытаюсь создать простое приложение для управления деталями с использованием инфраструктуры Java и Spring.
У меня есть сущность Parts и сущность MaterialLists. Я использую Postman.co для отправки образцов данных. Я могу успешно отправить POST объект Parts, но получаю сообщение об ошибке при попытке отправить POST объект MaterialLists.
Ошибка:
app-1 | 2024-07-15T17:18:03.404Z DEBUG 1 --- [io-8081-exec-10].m.m.a.ExceptionHandlerExceptionResolver: решено [org.springframework.dao.DataIntegrityViolationException: свойство not-null ссылается на нулевое или временное значение: com .lbx.parts.entity.MaterialListPart.materialList]
Можете ли вы помочь мне найти решение этой ошибки?
Ниже приведены мои объекты и мой пост в формате JSON
package com.lbx.parts.entity;
import jakarta.persistence.*;
import lombok.*;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Parts")
@Table
public class Parts {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String partNumber;
private String description;
private String manufacturer;
private String supplier;
private String serialNumber;
@Enumerated(EnumType.STRING)
private PartStatus status;
private String category;
private int quantityOnHand;
private String storageLocation;
@Temporal(TemporalType.DATE)
private Date expirationDate;
private int minQuantity;
private int maxQuantity;
private double cost;
private int leadTime;
private String processCriticality;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "material_list_id", nullable = false)
private MaterialLists materialList;
public enum PartStatus {
ACTIVE,
INACTIVE
}
}
package com.lbx.parts.entity;
import jakarta.persistence.*;
import lombok.*;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class MaterialLists {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long materialListID;
private String description;
@OneToMany(mappedBy = "materialList", cascade = CascadeType.ALL, orphanRemoval = true)
private List parts;
public void addPart(Parts part) {
parts.add(part);
part.setMaterialList(this);
}
}
package com.lbx.parts.service.impl;
import com.lbx.parts.dto.MaterialListsDto;
import com.lbx.parts.entity.MaterialLists;
import com.lbx.parts.entity.Parts;
import com.lbx.parts.mapper.MaterialListsMapper;
import com.lbx.parts.mapper.PartsMapper;
import com.lbx.parts.repository.MaterialListsRepository;
import com.lbx.parts.service.MaterialListsService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
public class MaterialListsServiceImpl implements MaterialListsService {
private final MaterialListsRepository materialListRepository;
@Override
public MaterialListsDto createMaterialList(MaterialListsDto materialListsDto) {
MaterialLists materialLists = MaterialListsMapper.mapToMaterialLists(materialListsDto);
// Set the material list reference in each part
if (materialLists.getParts() != null) {
for (Parts part : materialLists.getParts()) {
part.setMaterialList(materialLists);
}
}
MaterialLists savedMaterialLists = materialListRepository.save(materialLists);
return MaterialListsMapper.mapToMaterialListsDto(savedMaterialLists);
}
@Override
public MaterialListsDto getMaterialListById(Long materialListId) {
MaterialLists materialLists = materialListRepository.findById(materialListId)
.orElseThrow(() -> new IllegalArgumentException("Invalid material list Id:" + materialListId));
return MaterialListsMapper.mapToMaterialListsDto(materialLists);
}
@Override
public List getAllMaterialLists() {
List materialLists = materialListRepository.findAll();
return materialLists.stream()
.map(MaterialListsMapper::mapToMaterialListsDto)
.collect(Collectors.toList());
}
@Override
public MaterialListsDto updateMaterialList(Long materialListId, MaterialListsDto updatedMaterialListDto) {
MaterialLists materialLists = materialListRepository.findById(materialListId)
.orElseThrow(() -> new IllegalArgumentException("Invalid material list Id:" + materialListId));
materialLists.setDescription(updatedMaterialListDto.getDescription());
materialLists.setParts(updatedMaterialListDto.getParts().stream()
.map(PartsMapper::mapToParts)
.collect(Collectors.toList()));
// Set the material list reference in each part
if (materialLists.getParts() != null) {
for (Parts part : materialLists.getParts()) {
part.setMaterialList(materialLists);
}
}
MaterialLists updatedMaterialLists = materialListRepository.save(materialLists);
return MaterialListsMapper.mapToMaterialListsDto(updatedMaterialLists);
}
@Override
public MaterialListsDto deleteMaterialList(Long materialListId) {
MaterialLists materialLists = materialListRepository.findById(materialListId)
.orElseThrow(() -> new IllegalArgumentException("Invalid material list Id:" + materialListId));
materialListRepository.delete(materialLists);
return MaterialListsMapper.mapToMaterialListsDto(materialLists);
}
}
my GET for Parts:
[
{
"id": 10002,
"partNumber": "PN-001",
"description": "Part Number 001",
"manufacturer": "Manufacturer A",
"supplier": "Supplier A",
"serialNumber": "SN-001",
"status": "ACTIVE",
"category": "Category A",
"quantityOnHand": 100,
"storageLocation": "Location A",
"expirationDate": "2025-12-31",
"minQuantity": 10,
"maxQuantity": 200,
"cost": 10.5,
"leadTime": 5,
"processCriticality": "High"
},
{
"id": 20004,
"partNumber": "PN-00123",
"description": "Description of the part",
"manufacturer": "Manufacturer Name",
"supplier": "Supplier Name",
"serialNumber": "SN-00123",
"status": "ACTIVE",
"category": "Category Name",
"quantityOnHand": 50,
"storageLocation": "Location A",
"expirationDate": "2024-12-31",
"minQuantity": 10,
"maxQuantity": 100,
"cost": 25.75,
"leadTime": 14,
"processCriticality": "High"
},
{
"id": 30002,
"partNumber": "PN-12345",
"description": "Sample Part 1",
"manufacturer": "Manufacturer A",
"supplier": "Supplier A",
"serialNumber": "SN-12345",
"status": "ACTIVE",
"category": "Category A",
"quantityOnHand": 10,
"storageLocation": "Location A",
"expirationDate": "2024-12-31",
"minQuantity": 5,
"maxQuantity": 50,
"cost": 100.0,
"leadTime": 7,
"processCriticality": "High"
}
]
my attempt to POST MaterialLists
{
"description": "Sample Material List",
"parts": [
{
"partNumber": "PN-12345",
"description": "Sample Part 1",
"manufacturer": "Manufacturer A",
"supplier": "Supplier A",
"serialNumber": "SN-12345",
"status": "ACTIVE",
"category": "Category A",
"quantityOnHand": 10,
"storageLocation": "Location A",
"expirationDate": "2024-12-31",
"minQuantity": 5,
"maxQuantity": 50,
"cost": 100.0,
"leadTime": 7,
"processCriticality": "High"
}
]
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... stman-need
Свойство not-null ссылается на нулевое или временное значение при использовании Postman. Нужна помощь, чтобы понять, где ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение