Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate generates something wrong / 6 сообщений из 6, страница 1 из 1
03.09.2012, 14:07:14
    #37941288
_chaos_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate generates something wrong
Hi

U meny est tri tablsi:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Entity
@Table(name = "SIM_CARD", uniqueConstraints = {@UniqueConstraint(columnNames = "msisdn_msisdn"),
		@UniqueConstraint(columnNames = "imsi_imsi")})
public class SIMCard
{

	@Id
	@Column(name = "ID", nullable = false, unique = true)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_SIM_CARD")
	@SequenceGenerator(name = "SEQ_SIM_CARD", sequenceName = "SEQ_SIM_CARD", initialValue = 1, allocationSize = 1)
	private Integer id;

	@OneToOne
	@JoinColumn(name = "msisdn_msisdn")
	private MSISDN msisdn;

	@OneToOne
	@JoinColumn(name = "imsi_imsi")
	private IMSI imsi;

        ...
}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Entity
@Table(name = "MSISDN")
public class MSISDN
{
	public static final int LENGTH_MSISDN = 32;

	@Id
	@Column(name = "MSISDN", nullable = false, unique = true, length = LENGTH_MSISDN)
	private String msisdn;

        ...
}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Entity
@Table(name = "IMSI")
public class IMSI
{

	@Id
	@Column(name = "IMSI", nullable = false, unique = true, length = 15)
	private String imsi;
   
        ...
}



Est query:
Код: java
1.
2.
		List simCards = hibernateTemplate
				.find("select distinct s from SIMCard as s left join fetch s.msisdn as msisdn left join fetch s.imsi as imsi where msisdn.msisdn = '56951125067'");



Result:
Код: java
1.
2.
3.
4.
5.
Hibernate: select distinct simcard0_.ID as ID2_0_, msisdn1_.MSISDN as MSISDN1_1_, imsi2_.IMSI as IMSI0_2_, simcard0_.ADDRESS as ADDRESS2_0_, simcard0_.AUC_IDX as AUC3_2_0_, simcard0_.CONTACT_MSISDN as CONTACT4_2_0_, simcard0_.MODIFIED_DATE as MODIFIED5_2_0_, simcard0_.EMAIL as EMAIL2_0_, simcard0_.HEALTH as HEALTH2_0_, simcard0_.ICCID as ICCID2_0_, simcard0_.IMEI as IMEI2_0_, simcard0_.IMEI_MODIFIED_DATE as IMEI10_2_0_, simcard0_.IMEI_STATUS as IMEI11_2_0_, simcard0_.imsi_imsi as imsi28_2_0_, simcard0_.INVOICE as INVOICE2_0_, simcard0_.KEY as KEY2_0_, simcard0_.KEYD as KEYD2_0_, simcard0_.msisdn_msisdn as msisdn29_2_0_, simcard0_.OTA_DATE as OTA15_2_0_, simcard0_.PASSPORT_ID as PASSPORT16_2_0_, simcard0_.PIN1 as PIN17_2_0_, simcard0_.PIN2 as PIN18_2_0_, simcard0_.PROFILE_TYPE as PROFILE19_2_0_, simcard0_.PUK1 as PUK20_2_0_, simcard0_.PUK2 as PUK21_2_0_, simcard0_.PROVIDER as PROVIDER2_0_, simcard0_.STATE as STATE2_0_, simcard0_.STK_STATE as STK24_2_0_, simcard0_.SUBSCRIBER_NAME as SUBSCRIBER25_2_0_, simcard0_.TARIFF as TARIFF2_0_, simcard0_.TYPE as TYPE2_0_, msisdn1_.AVAILABLE_FOR_PORTAL as AVAILABLE2_1_1_, msisdn1_.IS_TEMP as IS3_1_1_, msisdn1_.IS_USED as IS4_1_1_, msisdn1_.PREMIUM_NUMBER as PREMIUM5_1_1_, imsi2_.IS_USED as IS2_0_2_ from SIM_CARD simcard0_ left outer join MSISDN msisdn1_ on simcard0_.msisdn_msisdn=msisdn1_.MSISDN left outer join IMSI imsi2_ on simcard0_.imsi_imsi=imsi2_.IMSI where msisdn1_.MSISDN='56951125067'

Hibernate: select simcard0_.ID as ID2_2_, simcard0_.ADDRESS as ADDRESS2_2_, simcard0_.AUC_IDX as AUC3_2_2_, simcard0_.CONTACT_MSISDN as CONTACT4_2_2_, simcard0_.MODIFIED_DATE as MODIFIED5_2_2_, simcard0_.EMAIL as EMAIL2_2_, simcard0_.HEALTH as HEALTH2_2_, simcard0_.ICCID as ICCID2_2_, simcard0_.IMEI as IMEI2_2_, simcard0_.IMEI_MODIFIED_DATE as IMEI10_2_2_, simcard0_.IMEI_STATUS as IMEI11_2_2_, simcard0_.imsi_imsi as imsi28_2_2_, simcard0_.INVOICE as INVOICE2_2_, simcard0_.KEY as KEY2_2_, simcard0_.KEYD as KEYD2_2_, simcard0_.msisdn_msisdn as msisdn29_2_2_, simcard0_.OTA_DATE as OTA15_2_2_, simcard0_.PASSPORT_ID as PASSPORT16_2_2_, simcard0_.PIN1 as PIN17_2_2_, simcard0_.PIN2 as PIN18_2_2_, simcard0_.PROFILE_TYPE as PROFILE19_2_2_, simcard0_.PUK1 as PUK20_2_2_, simcard0_.PUK2 as PUK21_2_2_, simcard0_.PROVIDER as PROVIDER2_2_, simcard0_.STATE as STATE2_2_, simcard0_.STK_STATE as STK24_2_2_, simcard0_.SUBSCRIBER_NAME as SUBSCRIBER25_2_2_, simcard0_.TARIFF as TARIFF2_2_, simcard0_.TYPE as TYPE2_2_, imsi1_.IMSI as IMSI0_0_, imsi1_.IS_USED as IS2_0_0_, msisdn2_.MSISDN as MSISDN1_1_, msisdn2_.AVAILABLE_FOR_PORTAL as AVAILABLE2_1_1_, msisdn2_.IS_TEMP as IS3_1_1_, msisdn2_.IS_USED as IS4_1_1_, msisdn2_.PREMIUM_NUMBER as PREMIUM5_1_1_ from SIM_CARD simcard0_ left outer join IMSI imsi1_ on simcard0_.imsi_imsi=imsi1_.IMSI left outer join MSISDN msisdn2_ on simcard0_.msisdn_msisdn=msisdn2_.MSISDN where simcard0_.msisdn_msisdn=?

Hibernate: select simcard0_.ID as ID2_2_, simcard0_.ADDRESS as ADDRESS2_2_, simcard0_.AUC_IDX as AUC3_2_2_, simcard0_.CONTACT_MSISDN as CONTACT4_2_2_, simcard0_.MODIFIED_DATE as MODIFIED5_2_2_, simcard0_.EMAIL as EMAIL2_2_, simcard0_.HEALTH as HEALTH2_2_, simcard0_.ICCID as ICCID2_2_, simcard0_.IMEI as IMEI2_2_, simcard0_.IMEI_MODIFIED_DATE as IMEI10_2_2_, simcard0_.IMEI_STATUS as IMEI11_2_2_, simcard0_.imsi_imsi as imsi28_2_2_, simcard0_.INVOICE as INVOICE2_2_, simcard0_.KEY as KEY2_2_, simcard0_.KEYD as KEYD2_2_, simcard0_.msisdn_msisdn as msisdn29_2_2_, simcard0_.OTA_DATE as OTA15_2_2_, simcard0_.PASSPORT_ID as PASSPORT16_2_2_, simcard0_.PIN1 as PIN17_2_2_, simcard0_.PIN2 as PIN18_2_2_, simcard0_.PROFILE_TYPE as PROFILE19_2_2_, simcard0_.PUK1 as PUK20_2_2_, simcard0_.PUK2 as PUK21_2_2_, simcard0_.PROVIDER as PROVIDER2_2_, simcard0_.STATE as STATE2_2_, simcard0_.STK_STATE as STK24_2_2_, simcard0_.SUBSCRIBER_NAME as SUBSCRIBER25_2_2_, simcard0_.TARIFF as TARIFF2_2_, simcard0_.TYPE as TYPE2_2_, imsi1_.IMSI as IMSI0_0_, imsi1_.IS_USED as IS2_0_0_, msisdn2_.MSISDN as MSISDN1_1_, msisdn2_.AVAILABLE_FOR_PORTAL as AVAILABLE2_1_1_, msisdn2_.IS_TEMP as IS3_1_1_, msisdn2_.IS_USED as IS4_1_1_, msisdn2_.PREMIUM_NUMBER as PREMIUM5_1_1_ from SIM_CARD simcard0_ left outer join IMSI imsi1_ on simcard0_.imsi_imsi=imsi1_.IMSI left outer join MSISDN msisdn2_ on simcard0_.msisdn_msisdn=msisdn2_.MSISDN where simcard0_.imsi_imsi=?




V console 3 queries, no ved eto mozno sdelat s 1. Pochemu hibernate generates takuy herny? Kak s etim borotsa? Kak perepesat query?
...
Рейтинг: 0 / 0
03.09.2012, 15:05:20
    #37941418
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate generates something wrong
Ne ispolzovat' hibernate ili horosho poguglit' i pochitat' pro hibernate
...
Рейтинг: 0 / 0
03.09.2012, 15:17:25
    #37941443
_chaos_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate generates something wrong
Nixic,

Sps, no uze pozdno pit borzome, nuzno optimizirovat nekotorie zaprosi, a ne perepisivat vse. Na specializovanom forume poguglit eto ne otvet.
...
Рейтинг: 0 / 0
03.09.2012, 15:27:57
    #37941465
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate generates something wrong
Странно, конечно. А вторые 2 дополнительных запроса 100% этим же HQL порождаются?
А не пробовали в тестовых целях OneToOne на ManyToOne заменить? У хибера постоянно какая-то ерунда с OneToOne. Во 2й версии его вообще рекомендовали не использовать.
...
Рейтинг: 0 / 0
03.09.2012, 15:35:50
    #37941480
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate generates something wrong
...
Рейтинг: 0 / 0
03.09.2012, 17:12:42
    #37941682
_chaos_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate generates something wrong
Blazkowicz,

Sps, mda, sovsem pechalka. Hibernete vrode kak standard ORM i takoy tuporiliy bug...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate generates something wrong / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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