2015-02-16 12 views
10

के साथ जेपीए कॉलम मैं डेटाबेस एक्सेस के लिए जेपीए का उपयोग करता हूं और सही नाम के साथ हर कॉलम को एनोटेट करता हूं। अब अगर मैं एक प्रश्न पर अमल (जैसे findAll()) यह रिटर्नगलत अंडरस्कोर

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

त्रुटि संदेश सही program_id अज्ञात है क्योंकि असली नाम programId है।

मॉडल: कार्यक्रम

@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; 
     } 

लेबल

@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; 
} 

क्वेरी

select program0_.program_id as program_1_5_, ... 

वहाँ एक कारण है कि जेपी है "ProgramIid" में "programIid" में परिवर्तन या क्या मुझे कोई कॉन्फ़िगरेशन याद आ रहा है?

धन्यवाद

संपादित करें: ओह खेद क्वेरी कोड/जानकारी जोड़ने के लिए भूल गया था।

मैं स्प्रिंग डेटा के जेपीए रिपोजिटरी इंटरफ़ेस का उपयोग करता हूं और findAll() क्वेरी का प्रयास करता हूं।

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

आप क्वेरी करने के लिए अपने जावा कोड को शामिल कर सकते हैं? – Ascalonian

+0

ने मेरी पोस्ट अपडेट की। मैंने अपना कोड नहीं लिखा, मैं वसंत डेटा से JpaRepository <> का उपयोग करता हूं। – KenavR

+0

यह जांचें http://stackoverflow.com/questions/2536829/hibernate-show-real-sql –

उत्तर

7

spring-boot-jpa-column-name-annotation-ignored में वर्णित है, अपने स्तंभ नाम साँप मामले में बदला जा रहा है।

संभावित समाधान:

  • सेटअप एक नामकरण रणनीति
  • उपयोग लोअरकेस स्तंभ अपने एनोटेशन में नाम
3

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

spring.jpa.hibernate.naming.strategy एक नहीं है हाइबरनेट 5 का उपयोग कर स्प्रिंग जेपीए कार्यान्वयन के लिए समर्थित संपत्ति 5.

application.properties में नीचे गुण का उपयोग

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 
संबंधित मुद्दे