首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本机查询Jpa存储库在没有列规范的情况下无法工作

本机查询Jpa存储库在没有列规范的情况下无法工作
EN

Stack Overflow用户
提问于 2016-04-08 11:32:34
回答 1查看 1.5K关注 0票数 1

嘿,大家,我有一个关系太多的类,我正在使用springboot,当我想通过Hql从@Query中提取数据时,我得到了数组的结果,当我使用NativeQuery时,我不能选择一个元素,它总是选择*

这是我的课

代码语言:javascript
复制
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="\"DEV\"")
public class Dev {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="\"IdDev\"")
private int id ;
@Column(name="\"NomDev\"")
private String nomdev;
@Column(name="\"NomDLL\"")
private String dll ;
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name="\"IdEtatDev\"")
private EtatDev etatdev ;
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name="\"IdEcu\"")
private Ecu ecu ; 


@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="\"VEH_BY_DEV\""
        ,joinColumns={@JoinColumn(name="\"IdDev\"")}, 
        inverseJoinColumns={@JoinColumn(name="\"GRPMOD\"")})

private Set<Vehid> vehid = new HashSet<>();
@ManyToOne(fetch=FetchType.LAZY)
private Maj maj ; 



public Set<Vehid> getVehid() {
    return vehid;
}
public void setVehid(Set<Vehid> vehid) {
    this.vehid = vehid;
}
public Ecu getEcu() {
    return ecu;
}
public void setEcu(Ecu ecu) {
    this.ecu = ecu;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getNomdev() {
    return nomdev;
}
public void setNomdev(String nomdev) {
    this.nomdev = nomdev;
}
public String getDll() {
    return dll;
}
public void setDll(String dll) {
    this.dll = dll;
}
public EtatDev getEtatdev() {
    return etatdev;
}
public void setEtatdev(EtatDev etatdev) {
    this.etatdev = etatdev;
}

public Dev() {
    super();
}
public Dev(int id, String nomdev, String dll, EtatDev etatdev, Ecu ecu, Set<Vehid> vehid) {
    super();
    this.id = id;
    this.nomdev = nomdev;
    this.dll = dll;
    this.etatdev = etatdev;
    this.ecu = ecu;
    this.vehid = vehid;
} 



}

这是我的存储库类

代码语言:javascript
复制
import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;



@Transactional 
public interface DevRepository extends JpaRepository<Dev, Integer> {


@Query(value="SELECT \"IdDev\"  "\NomDev\" FROM \"DEV\"  ",nativeQuery=true)
    List<Dev> getDevwithEtat() ; 
}

执行此操作时,未找到saye ERROR SQL "NomDLL“列。

好像只允许选择all或not,可能是结果列表,所以它不能返回一个字段,所以如果有人想要更改结果类型,那么它就可以得到两个或三个字段的结果,而不是全部考虑。请随意回答( ps )是逃避,当我添加"\NomDev\“时,我得到了一个错误

找不到错误的SQL "IdEtatDev“)

如能提供任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-08 13:21:16

首先用这个List<Dev> getDevwithEtat();改变List<Object[]> getDevwithEtat();

在转换json之后,您的devRepository.getDevwithEtat()结果如下

代码语言:javascript
复制
Map<Integer, String> map = new HashMap<Integer, String>();
for (Object[] result : devRepository.getDevwithEtat())
  map.put((Integer)result[0], (String)result[1]);

与Google Gson转换为json

代码语言:javascript
复制
String json = new Gson().toJson(map);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36498538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档