我有以下2个Hiberante
实体:
Person
Animal
它们有共享字段/列,例如:name、age
等,但是每个主键id字段的名称不同,例如有person\u id
和animal\u id
@Entity
@Table(name = "person")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonProperty
@Column(name = "person_id")
private Integer person_id;
// all below fields are generic in all the entities
@JsonProperty
@Column(name = "name")
private String name;
@JsonProperty
@Column(name = "age")
private String age;
}
有没有一种方法可以创建一个基本实体超类来保存这些通用的名称、年龄等字段,然后让Person、Animal和任何新实体扩展这个超实体?
请注意,超级类没有自己的表,所以我不确定
@table
值会有什么?
我还有一个问题,就是主键并非都被命名,例如,
id
,因此必须在每个实体中具体指定它们。
如果您不想在数据库中为这个“超级实体”(让我们称这个类为Being
)添加一个表,您仍然可以让Person
和Animal
从中继承(Person
应该从Animal
BTW),并对属性上的公共字段进行映射:
public abstract class Being {
private Integer id;
private String 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;
}
//...
}
@Entity
@Table(name = "person")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person extends Being {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonProperty
@Column(name = "person_id")
public Integer getId() {
return super.getId();
}
public void setId(Integer id) {
super.setId(id);
}
// all below fields are generic in all the entities
@JsonProperty
@Column(name = "name")
public String getName() {
return super.getName();
}
public void setName(String name) {
super.setName(name);
}
//...
}
所以我想要一个“Void Repository”,通过它可以访问不一定在实体上操作的存储过程。 但这当然不起作用,因为期望是一个实体。 有没有一种方法可以使用注释而无需创建虚拟实体,或者我是否坚持使用使用通过准备好的语句进行查询的已实现类? 因为老实说,这很难看:
我想查看项目中的所有类,当我找到一个从“City”派生的类时,我想创建一个该类型的新对象并将其添加到列表中。这允许我添加功能,而无需更新列表。最重要的是,我想在不使用任何库的情况下完成它。我已经找到了类似的主题,但他们使用了org。反思。我希望避免以下情况:
在jackson中,我们可以使用注释 @Json类型信息 @Json子类型 @JsonSubTypes.类型 以实现多态序列化。 我们可以选择 直接在数据模型上使用这些注释,这是最简单的方法。 在mixin上使用这些注释。这是一个关于它的链接Jackson中的多态反序列化,没有注释。 这两种解决方案都有一个问题:编写代码时必须知道所有子类。 在GraphQL中 鉴别器字段固定:"__typenam
我试图了解DI在我们的代码库(Kotlin)中是如何使用的。我们正在使用googleguice进行依赖注入。 下面是一个示例类: 在模块类中: DepB类别: 据我所知,对于用< code>@Inject注释的变量,Google Guice会使用模块类来解决这些依赖关系。所以< code>DepA对象的注入方式是有意义的。 但是呢?我们如何能够在不指定任何位置的情况下注入DepB?
问题内容: 我正在开发一个简单的Webapp,它将域模型公开为RESTful资源。我打算将JPA2(Hibernate)与SpringMVC REST支持一起使用。 在将Hibernate实体编组为XML / JSON时,如果该实体分离,它将为惰性子项关联抛出LazyLoadingException。如果实体仍然连接到Hibernate Session,它将几乎加载整个数据库。 我尝试使用推土机C
我正在尝试编写一个相当于以下SQL查询的Hibernate Criteria API: 这是我的实体 这是我的实体 是引用的外键。虽然没有明显的实体级关系,我也不能添加任何关系。