gpt4 book ai didi

java - Spring 启动 : Prevent persisting field declared in superclass

转载 作者:行者123 更新时间:2023-12-03 20:24:40 25 4
gpt4 key购买 nike

我正在 Spring Boot 中创建一个 Todo 应用程序,我需要创建两个表:TaskTodo ( Todo 扩展 Task )。
Task table 是一个名为 description 的字段我想阻止在 Todo 中创建该列 table 。
我该怎么做?
任务(父):

package com.example.todo.model;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Task {

@Id
private long id;
private String name;
private String description;
}
待办事项( child ):
package com.example.todo.model;

import javax.persistence.Entity;
import javax.persistence.Transient;

@Entity
public class Todo extends Task {

private boolean isChecked;
}

最佳答案

我建议你清理你的设计,因为从其他具体类继承的具体类(通常)是一种代码味道。对此的正确解决方案是将两个类的公共(public)部分分解为(抽象)父类(super class),然后将特定字段添加到具体的继承类中:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Completable {

@Id
private long id;
private String name;
}
@Entity
public class Task extends Completable {

private String description;
}
@Entity
public class Todo extends Completable {

private boolean isChecked;
}
因此,您将行为分组在它所属的类中,并且不必确保一件事包含描述而它不应该包含描述。

关于java - Spring 启动 : Prevent persisting field declared in superclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63688888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com