Hi
U meny est tri tablsi:
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;
...
}
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;
...
}
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:
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:
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?
|