2016-03-08 5 views
0

Я решил протестировать Spring Boot. Мой проект имеет следующие зависимости: JPA, MySql, WEB. Я создал простую базу данных MySql. Вот таблица из него:Получить com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Неизвестный столбец

CREATE TABLE `rawtype` (
    `rtId` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `rtName` varchar(50) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`rtId`) 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

Вот домен для этой таблицы:

import javax.persistence.*; 
import java.io.Serializable; 

@Entity 
@Table(name="rawtype") 
public class Rawtype implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="rtId", nullable = false) 
    @GeneratedValue 
    private int rtId; 

    @Column(name="rtName", nullable = false) 
    private String rtName; 

    protected Rawtype() { 
    } 

    public Rawtype(int rtId, String rtName) { 
     this.rtId = rtId; 
     this.rtName = rtName; 
    } 

    public int getRtId() { 
     return rtId; 
    } 

    public void setRtId(int rtId) { 
     this.rtId = rtId; 
    } 

    public String getRtName() { 
     return rtName; 
    } 

    public void setRtName(String rtName) { 
     this.rtName = rtName; 
    } 

    @Override 
    public String toString() { 
     return "Rawtype{" + 
       "rtId=" + rtId + 
       ", rtName='" + rtName + '\'' + 
       '}'; 
    } 
} 

Попытки получить все строки из этой таблицы с JpaRepository методом

List<T> findAll(); 

В журнале Я вижу, что Hibernate выполняет этот запрос:

select rawtype0_.rt_id as rt_id1_0_, rawtype0_.rt_name as rt_name2_0_ from rawtype rawtype0_ 

И я получаю эту ошибку:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'rawtype0_.rt_id' in 'field list' 

Можно ли предположить, что я должен делать? Спасибо.

P.S.

RawtypeRepository.java

import org.springframework.data.jpa.repository.JpaRepository; 
import domain.Rawtype; 

public interface RawtypeRepository extends JpaRepository<Rawtype,Integer> { 
    } 

RawtypeServiceImpl.java

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 
import domain.Rawtype; 

import java.util.List; 

@Service 
@Transactional 
public class RawtypeServiceImpl implements RawtypeService{ 

    @Autowired 
    RawtypeRepository rawtypeRepository; 

    public List<Rawtype> findAll() { 
     return rawtypeRepository.findAll(); 
    } 
} 
+0

так, столбец «rawtype0_.rt_id» не существует –

+0

Да, его не существует. У меня есть столбец rtId, но не rt_id. Я не понимаю, как Hibernate генерирует этот rt_id. – zigfridus

+0

хорошо, можете ли вы опубликовать метод, в котором создается запрос на спящий режим? –

ответ

0

Благодаря @aribeiro, который предоставил мне эту link я нашел мою ошибку. Название колонки не должно быть camelCase. Поэтому я изменил

@Column (имя = "rtId", обнуляемым = ложь) в

@Column (имя = "rtid", обнуляемым = ложь)

и теперь программа работает хорошо.

Смежные вопросы