При попытке получить доступ к объекту Masterkey из репозитория dba jpa выдает исключение числового формата. Таблица имеет столбец varchar для поля masterkey и строку для класса сущности. Ниже приведены подробности.
Класс сущности
@Entity
@Table(name = "JP_MasterKey")
public class MasterKey {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "masterId")
private Long id;
@Column(name = "keyStr")
private String keyStr;
@Column(name = "masterkeyStr")
@NaturalId
private String masterKeyString;
@Column(name = "isbn")
private String isbn;
@ManyToOne
@JoinColumns({@JoinColumn(name = "isbn", insertable = false, updatable = false), @JoinColumn(name = "masterkeyStr", insertable = false, updatable = false)})
private AdoptionIsbnMap adoptionIsbnMap;
@ManyToOne
@JoinColumn(name = "isbn", insertable = false, updatable = false)
private Title title;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getKeyStr() {
return keyStr;
}
public void setKeyStr(String keyStr) {
this.keyStr = keyStr;
}
public String getMasterKeyString() {
return masterKeyString;
}
public void setMasterKeyString(String masterKeyStr) {
this.masterKeyString = masterKeyStr;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public AdoptionIsbnMap getAdoptionIsbnMap() {
return adoptionIsbnMap;
}
public void setAdoptionIsbnMap(
AdoptionIsbnMap adoptionisbnmap) {
this.adoptionIsbnMap = adoptionisbnmap;
}
public Title getTitle() {
return title;
}
public void setTitle(Title title) {
this.title = title;
}
}
Запрос таблицы
CREATE TABLE `jp_masterkey` (
`masterId` bigint(20) NOT NULL AUTO_INCREMENT,
`masterkeyStr` varchar(20) NOT NULL,
`isbn` varchar(10) DEFAULT NULL,
`keyStr` varchar(20) NOT NULL,
PRIMARY KEY (`masterId`),
UNIQUE KEY `idx_mtkey_keystr` (`masterkeyStr`,`keyStr`),
KEY `keyStr` (`keyStr`) USING BTREE,
KEY `idx_jpmasterkeyisbn` (`isbn`),
KEY `IDX_JP_MASTERKEY_MASTERKEYSTR` (`masterkeyStr`)
) ENGINE=InnoDB AUTO_INCREMENT=21176003 DEFAULT CHARSET=utf8
Класс хранилища
public interface MasterKeyRepository extends CrudRepository<MasterKey,Long> {
Optional<List<MasterKey>> findByMasterKeyString(String masterKeyString);
}
Вставить этот запрос
INSERT INTO `jacplus`.`jp_masterkey` (`masterkeyStr`, `isbn`, `keyStr`) VALUES ('JP3RKM9LAEVXP', '0730305902', 'F92GULEQZUC');
Выдает исключение при вызове
masterKeyRepository
.findByMasterKeyString("JP3RKM9LAEVXP")
.get();
org.springframework.dao.InvalidDataAccessApiUsageException: For input string: "JP3RKM9LAEVXP"; nested exception is java.lang.NumberFormatException: For input string: "JP3RKM9LAEVXP"
Свойства
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.datasource.url =XXXXXXX?serverTimezone=UTC
spring.datasource.username=XXX
spring.datasource.password=XXXX
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Версии:
Spring Boot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
MySql Driver
<modelVersion>4.0.0</modelVersion>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
org.springframework.dao.InvalidDataAccessApiUsageException: For input string: "JP3RKM9LAEVXP"; nested exception is java.lang.NumberFormatException: For input string: "JP3RKM9LAEVXP"
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374)
at