英文:
Abstract class inheritance in springboot
问题
我对抽象类有些困惑,希望能得到帮助。
我有以下的类:
public abstract class AbstractUser{
private String username;
private String password;
}
然后我有这个类:
@Entity
public class Company extends AbstractUser{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String company_name
}
现在当我启动应用程序并检查 h2-console 时,Company 表只有 id 和 company_name 列,没有抽象类的变量。有办法让它包含所有的变量吗?
提前谢谢。
英文:
I am a bit confused in regards to abstract classes and help would be great.
I have a the following classes
public abstract class AbstractUser{
private String username;
private String password;
}
And then I have this class
@Entity
public class Company extends AbstractUser{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String company_name
}
Now when I launch the application and I check the h2-console, the table Company only has the id and company_name. not the abstract classes variables. Is there a way to make it so it gets all the variables?
thank you in advance
答案1
得分: 0
为了解决这个问题,您需要在抽象类上使用JPA注解。这与Spring Boot无关,而是与JPA有关。
您可以在抽象类上应用@MappedSuperclass
注解,这应该可以解决这个问题。了解更多信息:继承超类属性
英文:
To resolve this, you will need JPA annotation on your abstract class. This is not specific to Spring Boot, it's JPA thing.
You can apply @MappedSuperclass
on your abstract class and that should resolve this issue. Find More: [Inherit Super Class Properties](https://vladmihalcea.com/how-to-inherit-properties-from-a-base-class-entity-using-mappedsuperclass-with-jpa-and-hibernate/ "Inherit Super Class Properties")
答案2
得分: 0
你可以在AbstractUser上使用@MappedSuperclass Jpa注解,还可以考虑将id属性移到抽象类中。
@MappedSuperclass
public abstract class AbstractUser{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
}
英文:
You can use @MappedSuperclass Jpa annotation on the AbstractUser, Also consider moving the id attribute to the abstract class.
@MappedSuperclass
public abstract class AbstractUser{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论