Pessoal blz?
Estou tendo um problema muito sinístro com JPA, e ja fucei em tudo lugar e não achei solução.
seguinte, tenho duas entidades, uma que é a CountryVO e outra TeamVO , essa TeamVO faz um Join com a CountryVO como mostra
o código abaixo
@Entity
@Table(name = "tb_team")
public class TeamVO extends ApplicationVO {
@JoinColumn(name = "ID_COUNTRY", referencedColumnName = "ID_COUNTRY" )
@ManyToOne(optional = false)
private CountryVO country;
.
.
.
//Demais atributos
}
@Entity
@Table(name = "tb_country")
public class CountryVO extends ApplicationVO {
@Id
@Basic(optional = false)
@Column(name = "ID_COUNTRY")
private Long idCountry;
.
.
.
//Demais atributos
}
quando executo o select abaixo
String jpql = "SELECT o FROM TeamVO o JOIN o.country c";
ele traz todos os dados de Team e seu Country referente, mais quando cadastro um novo Team
e executo novamente o select, ele não retorna pro meu novo Team o seu Country relacionado,
ai se eu parar a aplicação e iniciá-la novamente, refazer o deploy, quando executo o meu select ele traz todos os dados certinho
Olhando nos logs eu notei uma coisa estranha, talvez possa ser útil por aqui.
quando é executado o select a primeira vez após eu fazer o deploy da aplicação, sobe no log as seguintes querys
SELECT t0.ID_TEAM, t0.CD_TYPE, t0.DS_IMAGE, t0.DS_TEAM, t0.ID_COUNTRY FROM tb_team t0, tb_country t1 WHERE (t1.ID_COUNTRY = t0.ID_COUNTRY)
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [182]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [184]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [64]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [238]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [15]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [81]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [24]
SELECT ID_COUNTRY, DS_CAPITAL, DS_CURRENCY_CODE, DS_NAME, DS_CURRENCY_NAME, DS_TYPE, DS_PHONE_CODE, DS_SOVEREIGN_STATE, DS_COUNTRY_CODE_2, DS_NAME_FORMAL, DS_COUNTRY_CODE_3, DS_COUNTRY_CODE_NUMBER, DS_SUB_TYPE, DS_COUNTRY_CODE_INTERNET FROM tb_country WHERE (ID_COUNTRY = ?)
bind => [52]
mais quando executo novamente o select só loga isso
SELECT t0.ID_TEAM, t0.CD_TYPE, t0.DS_IMAGE, t0.DS_TEAM, t0.ID_COUNTRY FROM tb_team t0, tb_country t1 WHERE (t1.ID_COUNTRY = t0.ID_COUNTRY)
pelo que podemos notar, depois que executo pela primeira vez o select, ele não faz mais a busca na tabela tb_country
Alguém ja passou por isso antes e poderia me dar uma força??