powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / hashCode в Entity
7 сообщений из 7, страница 1 из 1
hashCode в Entity
    #39359456
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть такая сущность

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Entity
@Table(name = "stock", catalog = "sample", uniqueConstraints = {
		@UniqueConstraint(columnNames = "STOCK_NAME"),
		@UniqueConstraint(columnNames = "STOCK_CODE") })
public class Stock implements java.io.Serializable {

	private Integer stockId;
	private String stockCode;
	private String stockName;
	private Set<StockDailyRecord> stockDailyRecords = new HashSet<StockDailyRecord>(0);



однако есть непонятка с hashCode, то что генерит по умолчанию, выдает ошибку
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Entity
@Table(name = "topic", catalog = "mkyongdb", uniqueConstraints = {
		@UniqueConstraint(columnNames = "topic_name") })
public class Topic {
	
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "topic_id", unique = true, nullable = false)
	private Integer topicId;
	
	@Column(name = "topic_name", unique = true, nullable = false, length = 10)
	private String topicName;
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "topic")
	private Set<ScoreRecord> records = new HashSet<ScoreRecord>(0);



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Exception in thread "main" java.lang.StackOverflowError
	at java.util.HashMap$HashIterator.<init>(Unknown Source)
	at java.util.HashMap$KeyIterator.<init>(Unknown Source)
	at java.util.HashMap$KeyIterator.<init>(Unknown Source)
	at java.util.HashMap.newKeyIterator(Unknown Source)
	at java.util.HashMap$KeySet.iterator(Unknown Source)
	at java.util.HashSet.iterator(Unknown Source)
	at java.util.AbstractSet.hashCode(Unknown Source)
	at org.hibernate.collection.PersistentSet.hashCode(PersistentSet.java:435)
	at com.topic.Topic.hashCode(Topic.java:74)
        at com.topic.ScoreRecord.hashCode(ScoreRecord.java:100)



Что не так?
...
Рейтинг: 0 / 0
hashCode в Entity
    #39359470
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((records == null) ? 0 : records.hashCode()); //ошибка на этой строке
		result = prime * result + ((topicId == null) ? 0 : topicId.hashCode());
		result = prime * result
				+ ((topicName == null) ? 0 : topicName.hashCode());
		return result;
	}
...
Рейтинг: 0 / 0
hashCode в Entity
    #39359479
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эту строчку следует удалить. Кроме того, не забываем, что хешкод должен коррелировать с методом equals
...
Рейтинг: 0 / 0
hashCode в Entity
    #39359547
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,

действительно, без той строки работает.
иквалс также был сгенерирован по дефолту.
...
Рейтинг: 0 / 0
hashCode в Entity
    #39360223
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

В случае уникальности stockCode достаточно только его hashCode.

Вопрос в том, как Вы собираетесь прописывать equals, если понадобится сравнивать содержимое stockDailyRecords, а простой обход его валит по переполнению памяти.
...
Рейтинг: 0 / 0
hashCode в Entity
    #39360224
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас там случайно цикла нет?

Типа Stock->StockDailyRecord->этот же Stock.
...
Рейтинг: 0 / 0
hashCode в Entity
    #39360755
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте подумаем все и ответим на два вопроса :

Для чего нужен hashCode и equals ?

И как их написать для данного класса ?

Но сначала вопрос :

мы будем сравнивать объекты на уровне БД или на уровне jvm ?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / hashCode в Entity
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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