我在春天創建自定義查詢時遇到了麻煩,因爲我的實體在其參數名稱中包含一個「_」字符:「game_date」。Spring JPA + CRUD - 自定義查詢不允許_字符?
我的表格也有一個名爲「game_date」的列。
我已經創建了下面的方法:
List<Games> findByGame_dateAndOpponent(@Param("game_date") Date game_date, @Param("opponent") String opponent);
,但是當我開始我的應用程序,它的崩潰與一種例外:「org.springframework.data.mapping.PropertyReferenceException:未找到type屬性gamedate遊戲!」。在Entity和Query方法中將參數名稱更改爲「gameDate」後,它停止抱怨,並且實際上正在返回預期的條目。但與此同時,它不會從搜索查詢中的「game_date」列中返回值,該搜索查詢是Date類型的簡單常規列。我不知道這一切發生了什麼。
我正在使用的數據庫是MySql。
這裏談到的代碼本身:
實體:
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "games")
public class Games {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_game")
private int id;
@Column(name = "game_date", columnDefinition = "DATE")
@Temporal(TemporalType.DATE)
private Date gameDate;
public Date getGame_date() {
return gameDate;
}
public void setGame_date(Date _game_date) {
this.gameDate = _game_date;
}
}
而且存儲庫:
import java.sql.Date;
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource
public interface GamesRepository extends CrudRepository< Games , Integer > {
List<Games> findById(@Param("id") int id);
List<Games> findAll();
List<Games> findByGameDateAndOpponent(@Param("game_date") Date game_date, @Param("opponent") String opponent);
}
我還沒有發現我忘了改getter和setter。謝謝! – Anton
請記住,如果有用,可以將問題標記爲已回答或向上投票;-) –