gpt4 book ai didi

java - 如何在MYSQL数据库中存储文件列表

转载 作者:行者123 更新时间:2023-11-28 23:26:51 25 4
gpt4 key购买 nike

我想将文件列表存储在 MYSQL 数据库的单个列中,在我的 mysql 中我有以下列附件 LONGBLOB

在我的映射文件中, @高球 @Column(name="附件") /私有(private)列表附件;/ 私有(private)列表附件;

但是我得到了 java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.sql.Blob,因为我正在使用 List。

有什么方法可以在单列中存储文件列表(.jpg、.txt 和 .zip 文件)?任何帮助将不胜感激。

@Entity
@Table(name="file_details")
@NamedQuery(name="FileDetail.findAll", query="SELECT c FROM FileDetailc")
public class FileDetailimplements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(generator="customGenerator")
@GenericGenerator(name="customGenerator", strategy="com.abc.generator.ContactIdentifierGenerator")
@Column(name="ID")
private int id;

@Column(name="DESCRIPTION")
private String description;

@Lob
@Column(name="ATTACHMENT")
/*private List<MultipartFile> attachment;*/
private byte[] attachment;

@Column(name="USER_EMAIL_ID", insertable=false, updatable=false)
private String userEmailId;

@ManyToOne
@JoinColumn(name="USER_EMAIL_ID")
private UserDetail userDetail;


//getters and setters

最佳答案

你必须创建另一个实体(你可以称之为附件),这个实体将有一个属性文件和一个与实际携带文件列表的实体的一对多关系。假设您的实际代码是这样的:

@Entity
public class User{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

@Lob @Column(name="ATTACHMENT")
private List<File> attachments;

}

您必须将您的用户实体修改为:

@Entity
public class User{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

@OneToMany(mappedBy="owner")
private List<Attachment> attachments;

}

然后像这样创建附件实体:

     @Entity
public class Attachment {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

@Lob @Column(name="ATTACHMENT")
private File file;

@ManyToOne
private User owner;

}

关于java - 如何在MYSQL数据库中存储文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38971540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com