Запрос соединения показывает ошибку при весенней загрузке, но тот же запрос дает результат в postgresqlJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Запрос соединения показывает ошибку при весенней загрузке, но тот же запрос дает результат в postgresql

Сообщение Anonymous »

Я попытался применить внутреннее соединение в приложении весенней загрузки, чтобы получить нужные столбцы из двух таблиц, а именно: «Автомобиль» и «Клиент».
У меня есть два объекта: «Транспортное средство» и «Клиент». p>

Код: Выделить всё

package com.eichers.vehicleapi.entity;

import jakarta.persistence.*;

@Entity
@Table(name="vehicle")
public class Vehicle {

//define fields
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "chassis")
private int chassis;

@Column(name = "regno")
private String regno;

@Column(name = "customerconsent")
private String customerconsent;

//define constructors

public Vehicle(String regno, String customerconsent) {
this.regno = regno;
this.customerconsent = customerconsent;
}

public Vehicle() {
}

//define getter and setter

public int getChassis() {
return chassis;
}

public void setChassis(int chassis) {
this.chassis = chassis;
}

public String getRegno() {
return regno;
}

public void setRegno(String regno) {
this.regno = regno;
}

public String getCustomerconsent() {
return customerconsent;
}

public void setCustomerconsent(String customerconsent) {
this.customerconsent = customerconsent;
}

//define toString method

@Override
public String toString() {
return "Vehicle{" +
"chassis=" + chassis +
", regno='" + regno + '\'' +
", customerconsent='"  + customerconsent + '\'' +
'}';
}
}
Субъект клиента

Код: Выделить всё

package com.eichers.vehicleapi.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "customer")
public class Customer {

//define fields
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "customer_id")
private Integer customerId;

@Column(name = "type")
private String type;

@Column(name = "first_name")
private String firstname;

@Column(name = "last_name")
private String lastname;

@OneToOne
@JoinColumn(name="chassis_id")
private Vehicle vehicle;

//constructor
public Customer(String type, String firstname, String lastname, Vehicle vehicle) {
this.type = type;
this.firstname = firstname;
this.lastname = lastname;
this.vehicle = vehicle;
}

}
Класс Details

Код: Выделить всё

package com.eichers.vehicleapi.entity;

import jakarta.persistence.Column;

public class Details {

@Column(name="chassis")
private int chassis;

@Column(name="first_name")
private String firstname;

@Column(name="last_name")
private String lastname;

@Column(name="regno")
private String regno;

@Column(name="customerconsent")
private String customerconsent;

// Details class for the final table which I expect
public Details() {
}

public Details(int chassis, String firstname, String lastname, String regno, String customerconsent) {
this.chassis = chassis;
this.firstname = firstname;
this.lastname = lastname;
this.regno = regno;
this.customerconsent = customerconsent;
}

public int getChassis() {
return chassis;
}

public void setChassis(int chassis) {
this.chassis = chassis;
}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public String getRegno() {
return regno;
}

public void setRegno(String regno) {
this.regno = regno;
}

public String getCustomerconsent() {
return customerconsent;
}

public void setCustomerconsent(String customerconsent) {
this.customerconsent = customerconsent;
}
}
Запрос, который я написал для объединения:

Код: Выделить всё

 @Override
public List getDetails() {

TypedQuery theQuery = entityManager.createQuery("SELECT Vehicle.chassis, Customer.firstname, Customer.lastname, Vehicle.regno, Vehicle.customerconsent FROM Customer JOIN Vehicle ON Customer.chassis_id = vehicle.chassis",Details.class);
//get the list
List  details = theQuery.getResultList();

return details;
}
Я получаю сообщение об ошибке:

Код: Выделить всё

org.hibernate.query.SemanticException: Could not interpret path expression 'Customer.chassis_id'
В приведенном выше примере я не знаю, что делать с Customer.chassis*_id, поскольку Chassis_id — это имя атрибута в базе данных.*
Как мне правильно использовать внешний ключ в запросе весенней загрузки? Поскольку это нормально, когда я запускаю его в Postgresql, он дает результаты.

Код: Выделить всё

SELECT vehicle.chassis, customer.first_name, customer.last_name, vehicle.regno, vehicle.customerconsent FROM vehicle JOIN customer ON vehicle.chassis = customer.chassis_id;

Код: Выделить всё

 chassis | first_name | last_name |   regno    |         customerconsent
---------+------------+-----------+------------+----------------------------------
2 | Kunal      | Ganjawala | 122yamaha  | it is great driving yamaha
3 | Mohit      | Chauhan   | 122hero    | it is great driving hero
3000 | Sonu       | Nigam     | 122hero    | it is great driving hero
3001 | Arijit     | Singh     | 129jawa    | it is great driving jawa
3003 | Armaan     | Mallik    | 1230pulsor | pulsor makes me feel like flying
(5 rows)
Вышеописанное — это то, чего я ожидаю, но этого не происходит.


Подробнее здесь: https://stackoverflow.com/questions/759 ... ult-in-pos
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»