Я бегу JPA проекта весной и я следующий класс, содержащий @ManyToOne соотношения:JPA @ManyToOne создает составной первичный ключ вместо @id
package ba.fit.vms.pojo;
import java.io.Serializable;
import java.util.Date;
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.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name="korisnik_vozilo")
public class KorisnikVozilo implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private Long id;
@ManyToOne(cascade = {CascadeType.REFRESH}, fetch=FetchType.EAGER)
@JoinColumn(nullable=false, updatable=false)
private Vozilo vozilo;
@ManyToOne(cascade = {CascadeType.REFRESH}, fetch=FetchType.EAGER)
@JoinColumn(nullable=false, updatable=false)
private Korisnik korisnik;
@Column(name = "dodijeljeno")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@NotNull
private Date dodijeljeno;
@Column(name = "vraceno")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date vraceno;
...
}
По какой-то причине, начиная с сервера, этот код создает составной первичный key (korisnik_id, vozilo_vin), вместо @Id определенного первичного ключа. Вот скриншот таблицы: Может кто-нибудь объяснить мне, что я сделал неправильно и как написать этот код, поэтому я не получаю этот составной ключ в базе данных, а тот, который задан в классе.
Он даже устанавливает автоинкремент на korisnik_id!
оффтоп комментарий: общая хорошая практика не называть поля и классы на вашем родном языке – Bozho
что ваша реализация JPA/ – Bozho
Я использую Spring петли для реализации JPA Spring данных ** hibenate ** MySQL – Blejzer