2015-02-16 6 views
10

Uso JPA per l'accesso al database e annotato ogni colonna con il nome corretto. Ora, se io eseguo una query (per esempio findAll()) restituisceColonna JPA con underscore errato

Unknown column 'program0_.program_id' in 'field list' 

Il messaggio di errore è corretto program_id è sconosciuto, perché il vero nome è programId.

Modelli: Programma

@Entity 
    @Table(name = "programs") 
    @XmlRootElement 
    public class Program implements Serializable { 
      @Id 
      @GeneratedValue(strategy = GenerationType.IDENTITY) 
      @Basic(optional = false) 
      @Column(name = "programId") 
      private Long programId; 
      @ManyToMany 
      @JoinTable(
        name = "programlabels", 
        joinColumns = { 
        @JoinColumn(name = "program", referencedColumnName = "programId")}, 
        inverseJoinColumns = { 
        @JoinColumn(name = "label", referencedColumnName = "labelId")}) 
      private Collection<Label> labels; 
     } 

Label

@Entity 
@Table(name = "labels") 
@XmlRootElement 
public class Label implements Serializable { 
    @Id 
    @Basic(optional = false) 
    @NotNull 
    @Size(min = 1, max = 100) 
    @Column(name = "labelId") 
    private String labelId; 
} 

query

select program0_.program_id as program_1_5_, ... 

C'è un motivo per cui JP Una modifica "programId" a "program_id" o mi manca qualche configurazione?

grazie

Edit: Oh scusa dimenticato di aggiungere codice di query/informazioni.

Utilizzo l'interfaccia JpaRepository di Spring Data e ho provato la query findAll().

@Repository 
public interface ProgramRepository extends JpaRepository<Program, Long> {} 
+0

Puoi includere il codice Java per fare la domanda? – Ascalonian

+0

ha aggiornato il mio post. Non ho scritto il mio codice, utilizzo JpaRepository <> da Spring Data. – KenavR

+0

Controlla questo http://stackoverflow.com/questions/2536829/hibernate-show-real-sql –

risposta

7

Come descritto in spring-boot-jpa-column-name-annotation-ignored, il nome della colonna viene convertito in caso di serpente.

Possibili soluzioni:

  • impostare una strategia di denominazione
  • Utilizzare i nomi delle colonne in minuscolo nelle vostre annotazioni