Сущность :
package spring_mvc.entity;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name = "font")
public class DBFonts {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
private String nameFont;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "User_id",referencedColumnName = "id")
private User user;
@ElementCollection
@CollectionTable(
name="StandartFont",
joinColumns=@JoinColumn(name="Fonts_id")
)
@Lob @Basic(fetch = FetchType.LAZY)
@Column(length=100000)
private List<byte[]> StandartFont;
public DBFonts(String nameFont, List<byte[]> standartFonts, User user) {
this.nameFont = nameFont;
this.user = user;
StandartFonts = standartFonts;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getNameFont() {
return nameFont;
}
public void setNameFont(String nameFont) {
this.nameFont = nameFont;
}
}
JpaRepository:
public interface FontRepo extends JpaRepository<DBFonts,Long> {
List<DBFonts> findByUserId(Long userID);
}
обновление БД:
public ResponseEntity<?> CreateFont(@AuthenticationPrincipal User user,@RequestPart MultipartFile[] files)
List<byte[]> filescommon = this.saveUploadedFiles(files);
DBFonts Fonts = new DBFonts(nameFont,filescommon,user);
fontRepo.save(Fonts);
return new ResponseEntity<String>(
HttpStatus.OK);
Все данные добавленыв базу данных (ElementCollection Too) !!
main:
public ResponseEntity<?> CreateFont(@AuthenticationPrincipal User user) throws Exception {
List<DBFonts> list= fontRepo.findByUserId(user.getId());
System.out.println(dBfont.get(0).getStandartFonts());
System.out.println(dBfont.get(0).nameFont());
return new ResponseEntity<String>(HttpStatus.OK);
Все данные извлекаются, кроме данных, хранящихся в таблице, созданной ElementCollection.
dBfont.get (0) .getStandartFonts () - здесь возникает ошибка:
Hibernate: select standartfo0_.fonts_id as fonts_id1_1_0_, standartfo0_.standart_fonts as standart2_1_0_ from standart_font standartfo0_ where standartfo0_.fonts_id=?
2018-12-06 15:47:38.331 WARN 7912 --- [nio-8080-exec-5] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by handler execution: org.hibernate.type.SerializationException: could not deserialize
2018-12-06 15:47:38.332 WARN 7912 --- [nio-8080-exec-5] o.h.e.loading.internal.LoadContexts : HHH000100: Fail-safe cleanup (collections) : org.hibernate.engine.loading.internal.CollectionLoadContext@70ff5b98<rs=HikariProxyResultSet@850091861 wrapping com.mysql.jdbc.JDBC42ResultSet@27d3ac01>
2018-12-06 15:47:38.332 WARN 7912 --- [nio-8080-exec-5] o.h.e.l.internal.CollectionLoadContext : HHH000160: On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [1] entries
Если вы посмотрите в отладке: StandartFont size = 0
Какизвлечь данные из ElementCollection?через JpaRepository