проблема с основными атрибутами java.sql.Blob - PullRequest
1 голос
/ 20 июля 2009

У меня есть этот код

@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

Я использую NetBeans 6.7, и в этой идее он показывает ошибку в строке (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

Ответы [ 3 ]

2 голосов
/ 21 июля 2009

Причина, по которой NetBeans генерирует это предупреждение, заключается в том, что при использовании java.sql.Blob у вас должна быть только аннотация @Lob, а не @ Basic.

Однако во время выполнения кажется, что ваша реализация JPA «помогает вам», игнорируя аннотацию @Basic и признавая, что столбец на самом деле является LOB. Вот почему ваш код работает. Возможно, что другая реализация JPA потерпит неудачу или будет по-другому вести себя.

1 голос
/ 20 июля 2009

Тип вашего имущества: java.sql.Blob, который является интерфейсом.
Прежде всего, почему? Разве это не должен быть байтовый массив (предположительно, там вы храните свое изображение)?
Во-вторых, именно поэтому NetBeans жалуется - как и Hibernate, как только вы попытаетесь прочитать материал из этой таблицы - у них нет возможности узнать, какой фактический тип создать для размещения данных в вашем поле.

0 голосов
/ 20 июля 2009

Проблема в линии раньше?

@Lob

Должно быть @Blob может быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...