EDIT: Só aproveitando o tópico sobre hibernate.
Como fazer um left outer join com HQL?
Minha HQL é o seguinte.
select s.professor as pS, l.professor as pL
FROM Lancamento l, HorasPagar hp,Substituicao s
WHERE hp.key.lancamento = l
AND s.lancamentoID = l.lancamentoID
AND l.filial.filialID = :filial
AND l.anoMesCompetencia = :comp
Preciso que seja left outer join s.lancamentoID = l.lancamentoID. Já tentei passar explicitamente como:
select s.professor as pS, l.professor as pL
FROM Lancamento l, HorasPagar hp
left outer join Substituicao s on s.lancamentoID = l.lancamentoID
WHERE hp.key.lancamento = l
AND l.filial.filialID = :filial
AND l.anoMesCompetencia = :comp
Mas nao funciona.
Me disseram que é apenas um simbolo que eu coloco do lado do join que quero fazer, mas quem me disse não lembrava qual era e não achei na internet.
Duvidas abaixos já resolvidas
/ Duvida sem solução /
Bem, resolvi realmente criando um ID, era a unica solução possivel.
Como eu mapeio uma tabela sem ID?
Eu procurei e vi que da pra marcar um campo como @Id que pro hibernate não faz diferença, ele até fez isso, o problema é que tem mais de um registro com esse mesmo valor, então a seguinte exception é lançada.
Caused by: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [br.com.model.MotivoSubstituicao#4563]
/ Duvida já resolvida /
Olá, estou tentando fazer o delete de uma entidade que tem o seguinte mapeamento.
@OneToMany(cascade = CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
@JoinTable(name = "substituicaoatividades", joinColumns = { @JoinColumn(name = "lancamentoID") }, inverseJoinColumns = { @JoinColumn(name = "atividadeID") })
public Set<Atividade> getAtividades() {
return atividades;
}
E para deletar ambos os métodos não funcionam.
Session s = currentSession();
Transaction t = s.beginTransaction();
SQLQuery query = s.createSQLQuery("delete from SubstituicaoAtividades where lancamentoID = '"+substituicao.getLancamentoID()+"'");
query.executeUpdate();
s.delete(substituicao);
t.commit();
Session s = currentSession();
Transaction t = s.beginTransaction();
s.delete(substituicao);
t.commit();
A Exception lançada é:
2010-08-30 14:39:30,752 ERROR [org.hibernate.util.JDBCExceptionReporter] The DELETE statement conflicted with the REFERENCE constraint "FK__MotivoSub__lanca__216BEC9A". The conflict occurred in database "MasCambridge", table "dbo.MotivoSubstituicao", column 'lancamentoID'.
2010-08-30 14:39:30,752 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not delete: [br.com.model.Substituicao#4553]