2015-02-16 16 views
10

Tôi sử dụng JPA để truy cập cơ sở dữ liệu và chú thích mọi cột có tên chính xác. Bây giờ nếu tôi thực hiện một truy vấn (ví dụ FindAll()) nó trảCột JPA có dấu gạch dưới không chính xác

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

Các thông báo lỗi là đúng program_id không rõ vì tên thật là programId.

Models: Chương trình

@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ó một lý do tại sao JP Thay đổi "programId" thành "program_id" hoặc tôi có thiếu cấu hình nào không?

cảm ơn

Chỉnh sửa: Xin lỗi quên thêm mã truy vấn/thông tin.

Tôi sử dụng giao diện JpaRepository của dữ liệu Spring và thử truy vấn findAll().

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

Bạn có thể bao gồm mã Java để thực hiện truy vấn không? – Ascalonian

+0

đã cập nhật bài đăng của tôi. Tôi không viết mã của riêng mình, tôi sử dụng JpaRepository <> từ Spring Data. – KenavR

+0

Kiểm tra http://stackoverflow.com/questions/2536829/hibernate-show-real-sql –

Trả lời

7

Như được mô tả trong spring-boot-jpa-column-name-annotation-ignored, tên cột của bạn đang được chuyển thành trường hợp rắn.

giải pháp có thể:

  • Thiết lập một chiến lược đặt tên
  • Sử dụng tên cột chữ thường trong các chú thích
Các vấn đề liên quan