gpt4 book ai didi

java - 父字段上的 Hibernate 注解

转载 作者:行者123 更新时间:2023-12-01 22:03:05 25 4
gpt4 key购买 nike

我有一个 POJO 类,没有特殊的 Hibernate 注释或信息,如下所示:

public class Parent{
Long id;
String foo;
String bar;
/* ... getters and setters, toString(), etc... */
}

我想创建一个带有 Hibernate 注释的子类。这个想法是第一个类不会对其有任何依赖,第二个类将拥有所有 JPA/Hibernate 特定的东西。如何在不重新创建父级中的所有字段的情况下做到这一点?我想在类上添加 Hibernate 注释

@Entity
public class PersistentChild extends Parent{
// ????
}

最佳答案

您可以在 POJO 上使用 @MappedSuperclass 注释,然后添加其他注释,就像它是普通的 JPA 实体一样。但在这种情况下,注释只会影响继承自它的实体类。示例:

@MappedSuperclass
public class Parent implements Serializable {
@Id
Long id;
@Column(name = "foo", required = true)
String foo;
@Column(name = "bar", required = false)
String bar;
/* ... getters and setters, toString(), etc... */
}

如果你确实不想修改父类(super class),可以使用映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
<mapped-superclass class="Parent">
<!-- add your mapping here -->
</mapped-superclass>
</entity-mappings>
<小时/>

替代方法

此外,您只需添加 @MappedSuperclass 注释,然后定义所有属性,如下所示:

@Entity
@AttributeOverrides({
@AttributeOverride(name = "foo", column=@Column(name = "foo", required = true)),
@AttributeOverride(name = "bar", column=@Column(name = "bar", required = false))
})
public class PersistentChild extends Parent {
@Id @GeneratedValue
Long id;
}

关于java - 父字段上的 Hibernate 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368691/

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