Rozkładam ręce nad tym błędem. Od razu powiem, że pierwszy raz korzystam z javy i frameworków. Za zadanie mam stworzenie bazy na podstawie klas encyjnych (baza ma się generować z kodu). Mam dwie klasy Cars i Clients oraz klase Rents, z ktorą mają mieć relacje one to many.
Klasa Clients:
package database;
import jakarta.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "Clients")
public class Clients {
private int id;
private String name;
private String surname;
@OneToMany(mappedBy = "clients")
private Set<Rents> Rents = new HashSet<>(0);
public Clients() {}
@Column(name = "clientsId")
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Basic
@Column(name = "Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Basic
@Column(name = "Surname")
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
Klasa Cars:
package database;
import jakarta.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "Cars")
public class Cars {
private int id;
private String brand;
private String model;
private double power;
private double price;
@OneToMany(mappedBy = "cars")
private Set<Rents> Rents = new HashSet<>(0);
public Cars() {}
@Column(name = "carsId")
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Basic
@Column(name = "Brand")
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
@Basic
@Column(name = "Model")
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
@Basic
@Column(name = "Power")
public double getPower() {
return power;
}
public void setPower(double power) {
this.power = power;
}
@Basic
@Column(name = "Price")
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Klasa Rents:
package database;
import jakarta.persistence.*;
import java.util.Date;
@Entity
@Table(name = "Rents")
public class Rents {
private int id;
private Date dateOfRent;
private Date dateOfReturn;
private double rentPrice;
@ManyToOne
@JoinColumn(name="carsId", nullable = false)
private Cars cars;
@ManyToOne
@JoinColumn(name="clientsId", nullable = false)
private Clients clients;
public Clients getClients() {return clients;}
public void setClients(Clients clients) {this.clients = clients;}
public Cars getCars() {return cars;}
public void setCars(Cars cars) {this.cars = cars;}
public Rents() {}
@Column(name = "Id")
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Basic
@Column(name = "RentDate")
public Date getDateOfRent() {
return dateOfRent;
}
public void setDateOfRent(Date dateOfRent) {
this.dateOfRent = dateOfRent;
}
@Basic
@Column(name = "ReturnDate")
public Date getDateOfReturn() {return dateOfReturn;}
public void setDateOfReturn(Date dateOfReturn) {
this.dateOfReturn = dateOfReturn;
}
@Basic
@Column(name = "Price")
public double getRentPrice() {
return rentPrice;
}
public void setRentPrice(double rentPrice) {
this.rentPrice = rentPrice;
}
@Override
public String toString() {
return "Rents{" +
"id=" + id +
", client= " + clients.getId() +
", car= " + cars.getId() +
", dateOfRental=" + dateOfRent +
", dateOfReturn=" + dateOfReturn +
'}';
}
}
Przy projekcie korzystam z mavena, hibernate i mysql. Po wywołaniu maina:
package renting;
import database.Clients;
import org.hibernate.*;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class Main {
public static void main(String[] args) {
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
SessionFactory factory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
Clients c1 = new Clients();
c1.setSurname("Sainz");
c1.setName("Carlos");
transaction.commit();
session.close();
factory.close();
System.out.println("Success");
}
}
Dostaje następujący błąd:
Exception in thread "main" org.hibernate.type.descriptor.java.spi.JdbcTypeRecommendationException: Could not determine recommended JdbcType for `database.Cars`
Przeszukałam co mogłam, ale nie znalazłam żadnego rozwiązania, nie wiem nawet na czym może polegać błąd (to moja pierwsza styczność z tego typu projektem). Byłabym wdzięczna za naprowadzenie co mogę zmienić