Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / This class does not define an IdClass Error Message for Primary Key / 4 сообщений из 4, страница 1 из 1
20.10.2015, 23:07
    #39081884
meph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
This class does not define an IdClass Error Message for Primary Key
Добрый день, я пробую примеры для 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
21.10.2015, 09:50
    #39082046
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
This class does not define an IdClass Error Message for Primary Key
Вот это читали?
http://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/domain/AbstractPersistable.html
Ни на какие мысли не наводит?

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

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

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

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


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