Я делаю базовый c CURD Spring boot. Я создал приложение Spring Boot из https://start.spring.io/ со ссылками на web, jpa и mysql. Как обычно, я определил репозиторий следующим образом: -
public interface URepository extends JpaRepository<SharedKeyUser, Long> {
}
Я получил эту ошибку: -
org.springframework.beans.factory.BeanCreationException: Ошибка создания bean-компонента с именем 'URepository', определенный в com.example.sharedkeyonetoone.repository.URepository, определенный в @EnableJpaRepositories, объявленном в JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: не удается разрешить ссылку на bean-компонент 'jpaMappingContext' при установке свойства bean-компонента 'mappingContext'; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем 'jpaMappingContext': не удалось вызвать метод инициализации; вложенное исключение: java .lang.IllegalStateException: не удалось асинхронно инициализировать собственный EntityManagerFactory: java .util.NoSuchElementException
Изначально у меня был UserRepository, а позже я переименовал его в URepository. Я все время получаю одну и ту же ошибку. Что не так?
Еще класс, как просили: -
public interface ARepository
extends JpaRepository<SharedKeyAddress,Long> {
}
@Entity
@Table(name = "shared_key_address")
public class SharedKeyAddress {
@Id
@Column(name = "id")
private Long id;
@Column(name = "street")
private String street;
@Column(name = "city")
private String city;
@OneToOne
@MapsId
private SharedKeyUser user;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public SharedKeyUser getUser() {
return user;
}
public void setUser(SharedKeyUser user) {
this.user = user;
}
}
@Entity
@Table(name = "shared_key_users")
public class SharedKeyUser {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "username")
private String userName;
@OneToOne(mappedBy = "sharedKeyUser", cascade = CascadeType.ALL)
private SharedKeyAddress address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public SharedKeyAddress getAddress() {
return address;
}
public void setAddress(SharedKeyAddress address) {
this.address = address;
}
}
Также application.properties :-
spring.datasource.url=jdbc:mysql://localhost:3306/my_dev?
useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
spring.datasource.username=dev
spring.datasource.password=dev
# Hibernate
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
log4j.category.org.springframework.web=INFO
logging.level.org.hibernate.SQL=DEBUG
Я пытаюсь установить связь один к одному на основе общего первичного ключа.