Здравствуйте, у меня есть приложение, которое работает на JBoss EAP 7 с JPA Hibernate.
У меня проблемы с простым вызовом entityManager.find(id)
.
Этот вызов вызывает один вызов базы данных Oracle 12SQL
select messagedat0_.id as id1_4_0_,
messagedat0_.messageid as messageid3_4_0_,
messagedat0_.messageblob as messageblob2_4_0_,
messagedat0_.messagetype as messagetype4_4_0_,
messagedat0_.retaintime as retaintime5_4_0_,
extractedv1_.messageid as messageid1_1_1_,
extractedv1_.absender as absender2_1_1_,
extractedv1_.empfaenger as empfaenger3_1_1_,
extractedv1_.nachrichtentyp as nachrichtentyp4_1_1_,
extractedv1_.uuid as uuid5_1_1_
from messagedata messagedat0_
left outer join ExtractedValues extractedv1_ on messagedat0_.messageid=extractedv1_.messageid
where messagedat0_.id=?
, который возвращает сущность.
Против MariaDB он выдает два выбора Hibernate:
select messagedat0_.id as id1_4_0_,
messagedat0_.messageid as messagei3_4_0_,
messagedat0_.messageblob as messageb2_4_0_,
messagedat0_.messagetype as messaget4_4_0_,
messagedat0_.retaintime as retainti5_4_0_,
extractedv1_.messageid as messagei1_1_1_,
extractedv1_.absender as absender2_1_1_,
extractedv1_.empfaenger as empfaeng3_1_1_,
extractedv1_.nachrichtentyp as nachrich4_1_1_,
extractedv1_.uuid as uuid5_1_1_
from messagedata messagedat0_
left outer join ExtractedValues extractedv1_ on messagedat0_.messageid=extractedv1_.messageid
where messagedat0_.id=?
2018-11-22 09:46:36,328 INFO [stdout] (default task-26) Hibernate:
select extractedv0_.messageid as messagei1_1_0_,
extractedv0_.absender as absender2_1_0_,
extractedv0_.empfaenger as empfaeng3_1_0_,
extractedv0_.nachrichtentyp as nachrich4_1_0_,
extractedv0_.uuid as uuid5_1_0_
from ExtractedValues extractedv0_ where extractedv0_.messageid=?
Когда я запускаю два выбора вручную, первый выбор делаетВернуть ряд второй нет.Это заставляет метод Find возвращать NULL.На мой взгляд, это не ожидаемый результат.
от сущности Messagedata :
@Id
private String id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="messageid", referencedColumnName="messageid", updatable=false)
private Set<Msginformation> msginformations;
@OneToMany
@JoinColumn(name="messageid", referencedColumnName="messageid")
private Set<Protocol> protocols;
@OneToMany
@JoinColumn(name="messageid", referencedColumnName="messageid")
private Set<Retry> retries;
@OneToOne
@JoinColumn(name="messageid", referencedColumnName="messageid", insertable=false, updatable=false)
private ExtractedValues extractedValues;
Отношение OneToOne к ExtractedValues вызывает проблемы в MariaDB.Я попытался установить
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
в файле persistence.xml, но это не решает проблему.Я понятия не имею, что с этим делать ...