2011-02-14 17 views
6

Me estoy acostumbrando a hibernar pero de vez en cuando me tropiezo, aquí hay otro.Hibernate @WhereJoinTable trouble

que estoy tratando de lograr lo siguiente:

@OneToMany 
@JoinTable(name = "inter_spec", 
     joinColumns = { @JoinColumn(name = "inter_id") }, 
     inverseJoinColumns = { @JoinColumn(name = "spec_id") }) 
@WhereJoinTable(clause = "spec_type=SECTION") 
public List<Section> getSections() { 
    return sections; 
} 

pero me da el siguiente error al ejecutar mi prueba de unidad:

[ERROR] JDBCExceptionReporter - Columna "SECTIONS0_.SECTION" no encontró; Instrucción de SQL:

Todo lo que quiero es aplicar la cláusula Where, por lo que mis secciones de Lista solo tienen los datos de tipo SECCIÓN.

Si elimino la cláusula Where pasa mi prueba de unidad, la aserción en la lista tiene los datos esperados.

Gracias por leer.

Respuesta

9

¡Ahh, esto siempre sucede, tan pronto como publico una pregunta lo averiguo!

Básicamente, en el rubro en la cláusula WHERE es una enumeración en el código Java, por lo que la línea debería haber sido:

@WhereJoinTable(clause = "spec_type='SECTION'") 

Aviso las comillas simples alrededor de la sección, que antes no existían!