powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / This class does not define an IdClass Error Message for Primary Key
4 сообщений из 4, страница 1 из 1
This class does not define an IdClass Error Message for Primary Key
    #39081884
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, я пробую примеры для Spring-Boot, и почти сразу же возникла небольшая проблема.

Цель: CRUD приложение для простенькой MySQL таблички

Код: sql
1.
2.
3.
4.
5.
6.
7.
mysql> describe test2;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(11) unsigned | NO   | PRI | NULL    |       |
| name  | varchar(255)     | NO   |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+



Есть Entity Temp2

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
@Entity
@Table(name = "test2")
public class Temp2 extends AbstractPersistable<Long>{

	@Id
	@Column(name = "id", unique = true, nullable = false, updatable = false)
	private long id;

	@Column(name = "name", unique = true, nullable = false, updatable = true)
	private String name;

	public Temp2() {
		// no-args constructor required by JPA spec
		// this one is protected since it shouldn't be used directly
	}

	public Long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}




Вылетает с ошибкой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
This class [class com.example.entity.Temp2] does not define an IdClass
	at org.hibernate.jpa.internal.metamodel.AbstractIdentifiableType.getIdClassAttributes(AbstractIdentifiableType.java:200)
	at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation$IdMetadata.<init>(JpaMetamodelEntityInformation.java:223)
	at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:79)
	at org.springframework.data.jpa.repository.support.JpaPersistableEntityInformation.<init>(JpaPersistableEntityInformation.java:39)
	at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65)
	at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145)
	at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89)
	at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:173)
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239)
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225)
	at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1631)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568)
	... 148 more




Насколько я понимаю, @IdClass предполагает составной ключ, но у нас ничего подобного нет. Создается впечатление, что Spring-Boot подключил все автоматом, и я что-то упустил из виду. Если это имеет какое-то значение, то spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect.

Спасибо за помощь и конструктивную критику :)
...
Рейтинг: 0 / 0
This class does not define an IdClass Error Message for Primary Key
    #39082046
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это читали?
http://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/domain/AbstractPersistable.html
Ни на какие мысли не наводит?

В современных ORM не обязательно указывать имена таблиц и колонок, если они совпадают с именами сущностей и их свойств.
...
Рейтинг: 0 / 0
This class does not define an IdClass Error Message for Primary Key
    #39082048
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
meph private long id;

Обычно используется Long, чтобы обозначить значение id == null как маркер ещё не персистентной сущности.
...
Рейтинг: 0 / 0
This class does not define an IdClass Error Message for Primary Key
    #39082907
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Спасибо за помощь. Вот, что бывает когда слепо копируешь чьи-то примеры.

Нашел интересным объяснение сути AbstractPersistable в этой статье
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / This class does not define an IdClass Error Message for Primary Key
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]