Skip to content

установка плагина из РФ получиалсь только

с VPN германии

чтобы это заработало нужно в проект добавить зависимости JPA

![[Pasted image 20241004071439.png]]

затем заходим в View -> Tool Window -> JPA Exploer

![[Pasted image 20241004071944.png]]


так как я получаю вот такой результат при клике правой кнопки мыши на пакет где планирую создать класс New -> JPA Entitites from DB

![[Pasted image 20241005051108.png]]

то я использую код sql который у меня благо сохранён по которому создаются таблицы базы чтобы скормить это duck.ai


Промт для duck.ai

у меня есть две модели которые я хочу создать из базы postgresql делается проекта на java spring используя JPA Buddy, но с урезанным функционалом который не позволяет создавать JPA Entities from DB средствами IDE, но сами библиотека JPA Buddy установлена    и аннотации @Entity @Column @Table и все прочие имеется возможность использовать. поэтому создай модели для двух классов User.java и Contact.java по этому коду

create table IF NOT EXISTS "Users" (
id INT GENERATED ALWAYS AS IDENTITY,
name varchar(255) not null,
PRIMARY KEY(id)
);

create table if not exists "Contacts"(
id INT generated always as identity,
"customerId" INT,
"contactName" VARCHAR(255) not null,
phone VARCHAR(15),
email VARCHAR(255),
primary key(id),
constraint fk_customer
foreign key("customerId")
references "Users"(id)
);

первый ответ не полный

погоди я не вижу в классах связи по id между этим классами в твоём коде, где она?

ответ2

User.java

import javax.persistence.*;
import java.util.List;

@Entity
@Table(name = "Users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(nullable = false, length = 255)
    private String name;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<Contact> contacts;

    // Конструкторы
    public User() {
    }

    public User(String name) {
        this.name = name;
    }

    // Геттеры и сеттеры
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Contact> getContacts() {
        return contacts;
    }

    public void setContacts(List<Contact> contacts) {
        this.contacts = contacts;
    }
}


Contact.java

```java import javax.persistence.*;

@Entity @Table(name = "Contacts") public class Contact {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@ManyToOne
@JoinColumn(name = "customerId", nullable = false)
private User user;

@Column(name = "contactName", nullable = false, length = 255)
private String contactName;

@Column(name = "phone", length = 15)
private String phone;

@Column(name = "email", length = 255)
private String email;

// Конструкторы
public Contact() {
}

public Contact(User user, String contactName, String phone, String email) {
    this.user = user;
    this.contactName = contactName;
    this.phone = phone;
    this.email = email;
}

// Геттеры и сеттеры
public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

public String getContactName() {
    return contactName;
}

public void setContactName(String contactName) {
    this.contactName = contactName;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

} ``````

пример

смотри на классы Users.java Contacts.java UserRepository.java UserController.java

https://gitlab.com/synergy9980417/razdel2/8_3

ещё можно добавить и этот функционал в контроллер

![[Pasted image 20241005104041.png]]

все операции CRUD можно узнать по классу из UserRepository по JpaRepository проваливаясь в наследуюемые