一个休眠的 pojo,它有一个Lob
字段,它的类型是byte[]
:
import javax.persistence.*;
import java.io.Serializable;
import static javax.persistence.AccessType.FIELD;
@Entity
@Access(FIELD)
@Table(name = "MYFILE")
public class MyFile implements Serializable {
@Id
@SequenceGenerator(name = "MYSEQ", sequenceName = "MYSEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYSEQ")
@Column(name = "ID")
private Long id;
@Column(name = "FILE_CONTENT")
@Lob
private byte[] fileContent;
// getters and setters
}
然后我读取一个空文件并将其保存到数据库:
MyFile file = new MyFile();
file.setFileContent(new byte[0]);
sessionFactory.getCurrentSession().save(file);
我想在另一个事务中加载它:
MyFile myFile = sessionFactory.getCurrentSession().query("...").uniqueResult();
System.out.println(myFile.fileContent);
它打印:
null
我不明白为什么该领域fileContent
是null
,不是new byte[0]
吗?