Olá pessoal.
Estou tentando fazer o seguinte:
@Entity(name = "obj_item_stat")
@Table(schema = Config.SCHEMA_JC3)
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "cat_code", discriminatorType = DiscriminatorType.STRING, length = 6)
@IdClass(AbstractObjectItemStatusId.class)
public abstract class AbstractObjectItemStatus extends AbstractObjectItemAssociationReported<AbstractObjectItemStatusId> implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@ManyToOne
@JoinColumn(name = "obj_item_id")
@JsonSerialize(using = JsonRelationSerializer.class)
@JsonDeserialize(using = JsonObjectItemRelationResolver.class)
private ObjectItem objItem;
@Id
@NotNull
@Digits(integer = 20, fraction = 0)
@Column(name = "obj_item_stat_ix")
@JsonSerialize(using = ToStringSerializer.class)
private BigInteger ix;
...
}
@Entity(name = "pers_stat")
@Table(schema = Config.SCHEMA_JC3)
@DiscriminatorValue("PE")
@PrimaryKeyJoinColumns({ @PrimaryKeyJoinColumn(name = "pers_stat_id", referencedColumnName = "obj_item_id"),
@PrimaryKeyJoinColumn(name = "obj_item_stat_ix", referencedColumnName = "obj_item_stat_ix") })
public class PersonStatus extends AbstractObjectItemStatus implements Serializable
{
...
}
Porém quando eu executo um jpql mais ou menos assim:
SELECT o FROM PersonStatus o WHERE o.objItem = :objIt
Me retorna o seguinte erro:
Caused by: org.postgresql.util.PSQLException: ERROR: column personstat0_.obj_item_id does not exist
Posição: 290
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273) ~[postgresql-9.0-801.jdbc4.jar:na]
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76) ~[c3p0-0.9.1.jar:0.9.1]
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) ~[hibernate3.jar:3.6.10.Final]
at org.hibernate.loader.Loader.getResultSet(Loader.java:1953) ~[hibernate3.jar:3.6.10.Final]
at org.hibernate.loader.Loader.doQuery(Loader.java:802) ~[hibernate3.jar:3.6.10.Final]
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) ~[hibernate3.jar:3.6.10.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2542) ~[hibernate3.jar:3.6.10.Final]
... 42 common frames omitted
O sql gerado é:
select
count((personstat0_.obj_item_stat_ix,
personstat0_.pers_stat_id)) as col_0_0_
from
jc3.pers_stat personstat0_
inner join
jc3.obj_item_stat personstat0_1_
on personstat0_.obj_item_stat_ix=personstat0_1_.obj_item_stat_ix
and personstat0_.pers_stat_id=personstat0_1_.obj_item_id
where
personstat0_.obj_item_id=? limit ?
O Hibernate esta tentando usar o campo obj_item_id na tabela pers_stat o que esta errado. Mas eu ja disse pra ele neste trecho de código ja mencionado acima que é para ele alterar o nome da coluna.
@PrimaryKeyJoinColumns({ @PrimaryKeyJoinColumn(name = "pers_stat_id", referencedColumnName = "obj_item_id"),
@PrimaryKeyJoinColumn(name = "obj_item_stat_ix", referencedColumnName = "obj_item_stat_ix") })
public class PersonStatus extends AbstractObjectItemStatus implements Serializable
Por que isso não funciona?
Este hibernate esta me dando uma dor de cabeça!