2017-04-20 120 views
1

我使用Spring引導和Spring數據。如何從表中獲得一列值?

我有一個與id和firstName列的聯繫人實體。

@Entity 
@Table(name = "Contact") 
public class Contact { 

    @Id 
    @GeneratedValue(strategy= GenerationType.AUTO) 
    private int id; 
    private String firstName; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 


} 

我使用存儲庫與Spring數據來查找我的數據。

public interface contactRepository extends CrudRepository<Contact, Long> { 
    } 

我的控制器,例如與GETALL:

@RequestMapping(value = "/getAllContact", produces = "application/json") 
public List<Contact> getAllClients(){ 
    return repo.getAll(); 
} 

我的控制器的作品,但我不知道怎麼回在我的控制器中的firstName列的所有值。我試圖用一個查詢,它的工作原理,但它只返回值的列表,而不是JSON:

@Query(value = "SELECT firstName FROM Contact") 
     List<Contact> findAllFirstName(); 

例子:

["Pierre", "Jean"] 

,我想這(以JSON):

[{"firstName ": "Pierre" },{"firstName ":"Jean"}] 

我該怎麼做?

回答

0

確保傑克遜庫位於您的類路徑中。然後在您的控制器方法中添加@ResponseBody以返回json輸出。在你的實體的id中添加@JsonIgnore,將其從json輸出中排除。

@RequestMapping(value = "/getAllContact", produces = "application/json") 
@ResponseBody 
public List<Contact> getAllClients(){ 
    return repo.getAll(); 
} 

@Entity 
@Table(name = "Contact") 
public class Contact { 

    @Id 
    @GeneratedValue(strategy= GenerationType.AUTO) 
    @JsonIgnore 
    private int id; 
    private String firstName; 

    ..... 
}