Kam*_*ili 3 hibernate jpa spring-boot
大家好,我有一个 Spring Boot 应用程序,我正在尝试执行查询,但出现此错误
illegal attempt to dereference collection [dev0_."IdDev".vehid] with element property reference [marque] [SELECT DISTINCT d FROM com.ardia.MDValidation.entities.Dev d Left Join d.validationdvd v WHERE d.etatdev.id = 6 AND d.vehid.marque.Nommarque= ?]
Run Code Online (Sandbox Code Playgroud)
这是我的开发班
@Entity
@Table(name="\"DEV\"")
public class Dev {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@JsonView(View.databymaj.class)
@Column(name="\"IdDev\"")
private int id ;
@JsonView(View.databymaj.class)
@Column(name="\"NomDev\"")
private String nomdev;
@Column(name="\"NomDLL\"")
private String dll ;
@ManyToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name="\"IdEtatDev\"")
private EtatDev etatdev ;
@JsonView(View.databymaj.class)
@ManyToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name="\"IdEcu\"")
private Ecu ecu ;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="\"VEH_BY_DEV\""
,joinColumns={@JoinColumn(name="\"IdDev\"")},
inverseJoinColumns={@JoinColumn(name="\"GRPMOD\"")})
private Set<Vehid> vehid = new HashSet<>();
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="\"IdMaj\"")
private Maj maj ;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="\"FCT_BY_DEV\""
,joinColumns={@JoinColumn(name="\"IdDev\"")},
inverseJoinColumns={@JoinColumn(name="\"IdFonction\"")})
private Set<Fonction> fonction = new HashSet<>();
@JsonView(View.databymaj.class)
@OneToMany(fetch=FetchType.EAGER,mappedBy="dev")
private Set<ValidationDVD> validationdvd =new HashSet<> () ;
Run Code Online (Sandbox Code Playgroud)
这是我的 Vehid 课
@Entity
@Table(name="\"Vehid\"")
public class Vehid {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="\"CODE_VEH\"")
private int idv ;
@JsonView(View.model.class)
@Column(name="\"NOMVEH\"")
private String model ;
@ManyToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name="\"IdMarque\"")
private Marque marque ;
Run Code Online (Sandbox Code Playgroud)
最后是 Marque 类:
@Entity
@Table(name="\"Marque\"")
public class Marque {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="\"CODMAR\"")
private int id ;
@JsonView(View.marqonly.class)
@Column(name="\"NOMMAR\"")
private String Nommarque ;
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行此查询
@Query(value="SELECT DISTINCT d FROM Dev d Left Join d.validationdvd v WHERE d.etatdev.id = 6 AND d.vehid.marque.Nommarque= ?")
public List getbymarkalldata(String mark);
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有工作,它实际上做SENS,因为我试图访问列表是如何不起作用<vehid>这样的d.vehid,但任何帮助,将如何我可以访问该属性可以理解
问题出在这里:AND d.vehid.marque.Nommarque= ?
在您的 Dev 类中, vehid 是一个集合……您不能以这种方式在查询中引用它……您必须使用JOIN关键字……就像您对 validationdvd 所做的一样:Left Join d.validationdvd v
Left Join与否,由你决定......
| 归档时间: |
|
| 查看次数: |
4613 次 |
| 最近记录: |