我正在使用Play Framework 1.2.4 PostgreSQL和JPA.我想有一个Model层次结构,看看有一些替代方法可以做到这一点.
我有一个基类(这是抽象的)和两个扩展这个基类的具体类.我想要拥有具体的类,我不想坚持这个基类.在基类中,我有另一个Model类作为属性,换句话说,我@ManyToOne在我的基类中有关系.
我的问题是实现这个的最佳方法是什么?使用@MappedSuperclass或@Inheritance与TABLE_PER_CLASS策略?我有点困惑,因为它们看起来几乎相同.
我对将来可能面临的查询和性能问题也有一些担忧.
我正在使用JPA2和Hibernate,并尝试为我的实体引入一个公共基类.到目前为止看起来像这样:
@MappedSuperclass
public abstract class BaseEntity {
@Id
private Long id;
@Override
public int hashCode() {
// ...
}
@Override
public boolean equals(Object obj) {
// ...
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,对于每个表都有一个$entityname_seq我想用作序列生成器的序列.如何从我的子类中设置它?我想我需要覆盖@GeneratedValue并使用@SequenceGenerator创建一个新的SequenceGenerator.
我的情况在这里描述:
eclipse在此持久性单元中定义的名为"ID_GENERATOR"的重复生成器
但是我的问题是不同的,所选答案并没有解决它:
" 有多个@SequenceGenerator 具有相同的名称是否有效,即使它用于此目的Hibernate:如何覆盖映射超类的属性? "
如果无效,还有替代方案吗?
非常感谢您的回答.
我正在开发一个Spring Hibernate项目,我有三个类
BaseEntity,Person&Owner.
Person延伸BaseEntity,Owner延伸Person.
public class BaseEntity {
private Integer id;
Getters & Setters
Run Code Online (Sandbox Code Playgroud)
public class Person extends BaseEntity {
private String firstName;
private String lastName;
Getters & Setters
Run Code Online (Sandbox Code Playgroud)
@Entity
@Table(name="OWNERS")
public class Owner extends Person {
@Column(name="ADDRESS")
private String address;
@Column(name="CITY")
private String city;
@Column(name="TELEPHONE")
private String telephone;
Getter and Setters
Run Code Online (Sandbox Code Playgroud)
现在我想在一个表中映射三个类的所有属性Owner.任何人都可以帮我,我该如何映射?
我有一个基于xml的映射,我希望在注释中执行此操作
<class name="org.springframework.samples.petclinic.Owner" table="owners">
<id name="id" column="id">
<generator class="identity"/>
</id> …Run Code Online (Sandbox Code Playgroud)