如何解决输出 Java Spring Boot JPA
我正在开发具有以下实体和代码的应用程序:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Clip {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private long size;
private long date;
public Clip() {
}
public long getId() {
return id;
}
public long getSize() {
return size;
}
public long getDate() {
return date;
}
}`
@Entity
public class MotionPicture extends Clip {
private long duration;
@OnetoMany(fetch = FetchType.LAZY)
List<Clip> clips = new ArrayList<Clip>();
public MotionPicture() {
}
public MotionPicture(long duration) {
this.duration = duration;
}
public List<Clip> getClips() {
return clips;
}
public long getDuration() {
return duration;
}
}
MotionPicture 的 RestController:
@CrossOrigin
public class MotionPictureRestController {
@Autowired
private MotionPictureRepository motionPictureRepository;
@GetMapping(value = "universal2/motionpicture")
public ResponseEntity<List<MotionPicture>> getMotionPicture() {
List<MotionPicture> result = this.motionPictureRepository.findAll();
if (!result.isEmpty()) {
return new ResponseEntity<List<MotionPicture>>(result,HttpStatus.OK);
} else {
return new ResponseEntity<List<MotionPicture>>(HttpStatus.NOT_FOUND);
}
}
@GetMapping(value = "universal2/motionpicture/{id}")
public ResponseEntity<MotionPicture> getMotionPictureById(@PathVariable("id") long id) {
Optional<MotionPicture> result = this.motionPictureRepository.findById(id);
if (result.isPresent()) {
return new ResponseEntity<MotionPicture>(result.get(),HttpStatus.OK);
} else {
return new ResponseEntity<MotionPicture>(HttpStatus.NOT_FOUND);
}
}
}
我的数据库
表格:剪辑 列:id(1-100 唯一)、日期、大小
表格:motion_picture 列:id(1-100 唯一)、日期、大小、持续时间
关联表:motion_picture_clips 列:motion_picture_id(1-100 随机)、clips_id(1-100 唯一)
当我运行程序并在 Postman 中创建 getRequest(getById 和 getAll)时 --> 我会得到重复的值
来自 Postman 的 JSON:(localhost/DB/motionpicture/2)
{
"id": 2,"size": 7040,"date": 2006,"duration": 2899,"clips": [
{
"id": 73,"size": 7246,"date": 2009
},{
"id": 73,"date": 2009
}
]
}
如何更改代码或数据库以仅获取一个 ID 为 73 的剪辑?
非常感谢您的帮助:)
亲切的问候!
解决方法
尝试使用
@OneToMany(fetch = FetchType.LAZY)
Set<Clip> clips = new HashSet<Clip>();
而不是:
@OneToMany(fetch = FetchType.LAZY)
List<Clip> clips = new ArrayList<Clip>();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。