亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

引起:org.postgresql.util.PSQLException:錯誤:

引起:org.postgresql.util.PSQLException:錯誤:

拉風的咖菲貓 2023-03-09 15:16:56
我正在開發 Spring Data JPA Postgres 示例。在這個例子中,我建立了 Student 和 StudentMember 之間的關系。Student.java@Builder@Data@AllArgsConstructor@NoArgsConstructor@Entity@Table(uniqueConstraints = {        @UniqueConstraint(name="student_name_key",columnNames = {"studentName"})})public class Student{    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    @Column(name = "studentId")    private Long studentId;    @Column(name = "studentName", nullable = false)    private String studentName;    @OneToMany(mappedBy = "student", fetch = FetchType.LAZY, cascade = CascadeType.ALL)    private List<StudentMember> studentMembers;}StudentMember.java@Builder@Data@AllArgsConstructor@NoArgsConstructor@Entity@Tablepublic class StudentMember {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Long studentMemberId;    @ManyToOne(fetch = FetchType.LAZY)    @JoinColumn(name="studentId", insertable=false, updatable=false, nullable = false,foreignKey=@ForeignKey(name = "fk_student_id"))    private Student student;}MainApp.java@SpringBootApplicationpublic class MyProgramApplication implements CommandLineRunner {    @Autowired    ProgramMemberRepository memberRepository;    @Autowired    ProgramRepository programRepository;    public static void main(String[] args) {        SpringApplication.run(MyProgramApplication.class, args);    }    @Override    public void run(String... args) throws Exception {        Student student = Student.builder().studentName("John Doe").build();        programRepository.save(student);        StudentMember programMember = StudentMember.builder()                .student(student)                .build();        if(Objects.nonNull(student.getStudentMembers())){            student.getStudentMembers().add(programMember);        }
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

您Student在實體中的關系StudentMember是只讀的。


消除insertable=false, updatable=false


@ManyToOne(fetch = FetchType.LAZY)

@JoinColumn(name="studentId", nullable = false,foreignKey=@ForeignKey(name = "fk_student_id"))

private Student student;

否則 Hibernate 不寫入外鍵。


另外我不確定你的映射是否正確。PostgreSQL 抱怨一個列被調用student_id但名稱@JoinColum是studentId


先檢查這個。


查看完整回答
反對 回復 2023-03-09
  • 1 回答
  • 0 關注
  • 413 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號