我有这个代码
@Entity
@Table(name = "picture")
public class Picture implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue
private int id;
@Column(name = "format", length = 8)
private String format;
@Basic(fetch = FetchType.LAZY)
@Column(name = "context", nullable = true, columnDefinition="mediumblob")
@Lob
private java.sql.Blob myBlobAttribute; // protected accessor and modifier
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "branch_fk", referencedColumnName = "id", nullable = false)
private Branch branch;
//Some setter and getter我使用NetBeans6.7,在这个Ide中,它在(private java.sql.Blob myBlobAttribute;)行显示错误,但代码运行时,它会在我的数据库中生成图片表!这是一个真正的错误还是只是电子通知,我必须如何解决它?错误消息为:
basic attributes can only be of the following types: java primitive types,wrapper of primitive types, String, java.math.bigInteger, java.math.BigDecimal, java,util.Date, java.util.Calendar, java.sql.Data, java.sql.TimeStamp, byte[], Byte[], char[], Character[], enums, or any Serializable type发布于 2009-07-20 16:57:53
您的属性类型是java.sql.Blob,它是一个接口。
首先,为什么?它不应该是一个字节数组(想必这就是你存储图像的地方)?
其次,这就是为什么NetBeans会抱怨--当你试图从这个表中读取数据时,Hibernate也会抱怨--他们无法知道要创建什么样的实际类型来将数据放入你的字段。
发布于 2009-07-20 20:07:19
NetBeans生成此警告的原因是,在使用java.sql.Blob时,您应该只使用@Lob注解,而不是@Basic。
然而,在运行时,通过忽略@Basic注释并认识到列实际上是一个LOB,您的JPA实现听起来像是在“帮助您”。这就是你的代码工作的原因。不同的JPA实现可能会失败,或者以某种方式表现不同。
发布于 2009-07-20 14:31:54
问题出现在前面了吗?
@Lob也许应该是@Blob?
https://stackoverflow.com/questions/1153793
复制相似问题