Skip to content

Instantly share code, notes, and snippets.

@giuliana-bezerra
Created May 20, 2023 15:20
Show Gist options
  • Save giuliana-bezerra/53ba889459125ce87e3213f3542be8c0 to your computer and use it in GitHub Desktop.
Save giuliana-bezerra/53ba889459125ce87e3213f3542be8c0 to your computer and use it in GitHub Desktop.
Application with bug which will be fixed by ChatGPT.
package com.example.demo;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
ApplicationRunner runner(DemoService demoService) {
return args -> {
var demoObj = new DemoObj();
demoObj.setName("Giu");
var demoObjPk = new DemoObjPk();
demoObjPk.setSeq(1);
demoObjPk.setOutraSeq(1);
demoObj.setId(demoObjPk);
var parentObj = new ParentDemoObj();
parentObj.setId(1);
parentObj.setDemoObjs(Arrays.asList(demoObj));
System.out.println(demoService.create(parentObj));
};
}
}
@Entity
class ParentDemoObj {
@Id
Integer id;
@OneToMany(mappedBy = "id.seq", cascade = CascadeType.PERSIST)
List<DemoObj> demoObjs;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<DemoObj> getDemoObjs() {
return demoObjs;
}
public void setDemoObjs(List<DemoObj> demoObjs) {
this.demoObjs = demoObjs;
}
@Override
public String toString() {
return "ParentDemoObj [id=" + id + ", demoObjs=" + demoObjs + "]";
}
}
@Entity
class DemoObj {
@EmbeddedId
public DemoObjPk id;
public String name;
public DemoObj() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public DemoObjPk getId() {
return id;
}
public void setId(DemoObjPk id) {
this.id = id;
}
@Override
public String toString() {
return "DemoObj [id=" + id + ", name=" + name + "]";
}
}
@Embeddable
class DemoObjPk implements Serializable {
Integer seq;
Integer outraSeq;
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
public Integer getOutraSeq() {
return outraSeq;
}
public void setOutraSeq(Integer outraSeq) {
this.outraSeq = outraSeq;
}
@Override
public String toString() {
return "DemoObjPk [seq=" + seq + ", outraSeq=" + outraSeq + "]";
}
}
@Service
class DemoService {
private DemoRepository repository;
public DemoService(DemoRepository repository) {
this.repository = repository;
}
public ParentDemoObj create(ParentDemoObj demoObj) {
return repository.save(demoObj);
}
}
interface DemoRepository extends JpaRepository<ParentDemoObj, Integer> {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment