JPA, уникальный в столбце влияние на другой столбец - PullRequest
2 голосов
/ 20 марта 2019

Я использую весеннюю загрузку, jpa, h2.

Мой класс сущностей такой.

@Entity
@Table(name="product")
public class Product {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long id;
  @Column(name="name", unique=true)
  private String name;
  private String attr1;
  private String attr2;
}

, и я попытался инициализировать пример данных, используя data.sql в classpath.вот это.

insert into product values(1, 'hong', 'attr1', 'attr2');
insert into product values(2, 'kim', 'attr1', 'attr2');

но я получил ошибку

Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #2 of URL [file:/D:/OneDrive%20-%20IOChord/personal/develop/workspace/workspace_spring/jpa-00-basic/target/classes/data-h2.sql]: insert into product values(2, 'kim', 'attr1', 'attr2'); nested exception is org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "UK_JMIVYXK9RMGYSRMSQW15LQR5B_INDEX_1 ON PUBLIC.PRODUCT(NAME) VALUES ('attr2', 1)"; SQL statement:
insert into product values(2, 'kim', 'attr1', 'attr2') [23505-197]

но когда я изменил это

insert into product values(1, 'hong', 'attr1', 'attr2');
insert into product values(2, 'kim', 'attr3', 'attr3');

это работает.Я просто хочу настроить только один столбец (столбец «имя») является уникальным.но это влияет на другой столбец attr1, attr2.почему это происходит?

1 Ответ

3 голосов
/ 20 марта 2019

Порядок столбцов в базе данных может отличаться от того, что у вас есть в вашей сущности, это должно сделать это:

insert into product(id, name, attr1, attr2) values(1, 'hong', 'attr1', 'attr2');
insert into product(id, name, attr1, attr2) values(2, 'kim', 'attr1', 'attr2');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...