Автоматическое увеличение с помощью @Generated

76
4

Я использую SQL Server 2008R2 для моего приложения для Java. Теперь я хочу, чтобы при сохранении компонента его столбец Идентификатора автоматически обновлялся. Мой объект bean:

@Entity
@Table(name = "BANK_MASTER")
@XmlRootElement
public class BankMaster implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "BANK_ID")
private Long bankId;

@Size(max = 30)
@Column(name = "BANK_NAME")
private String bankName;

@Size(max = 25)
@Column(name = "IP_ADDRESS")
private String ipAddress;

@Size(max = 255)
@Column(name = "URL")
private String url;

@Size(max = 1)
@Column(name = "FORM_METHOD")
private String formMethod;

@Size(max = 1)
@Column(name = "SECURED")
private String secured;

@Column(name = "ACTIVEFLAG")
private Short activeflag;

@Column(name = "ENABLED")
private Short enabled;

@OneToMany(mappedBy = "bankId")
private Collection<BankBranchMaster> bankBranchMasterCollection;

@JoinColumn(name = "PARTNER_ID", referencedColumnName = "UA_ID")
@ManyToOne
private PartnerAccount partnerId;
}

Однако, когда я сохраняю компонент, он дает ошибку ограничения. Моя таблица создает запрос следующим образом:

    CREATE TABLE [dbo].[BANK_MASTER](
[BANK_ID] [numeric](10, 0) IDENTITY(105,1) NOT NULL,
[BANK_NAME] [varchar](30) NULL,
[IP_ADDRESS] [varchar](25) NULL,
[URL] [varchar](255) NULL,
[FORM_METHOD] [varchar](1) NULL,
[SECURED] [varchar](1) NULL,
[PARTNER_ID] [numeric](10, 0) NULL,
[ACTIVEFLAG] [numeric](1, 0) NULL,
[ENABLED] [numeric](1, 0) NULL

спросил(а) 2021-01-25T17:26:13+03:00 5 месяцев назад
1
Решение
124

Вы добавили @NotNull в свойство id. Это означает, что JPA будет проверять, что этот идентификатор не имеет значения null до его сохранения. Но идентификатор является нулевым, поскольку он будет сгенерирован после, по базе данных. Таким образом, аннотация NotNull находится в прямом противоречии с тем, что она автоматически генерируется идентичностью.

Просто удалите аннотацию @NotNull из id.

ответил(а) 2021-01-25T17:26:13+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема