什么是适当的访问用户的映射@Id在父母和独特的序列中的基础课程
题
我有一个类层次:
abstract DomainObject {
...
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@SequenceGenerator(name="SEQ",sequenceName="SEQ_DB_NAME")
@Column(name = "id", updatable = false, nullable = false)
private Long id;
...
}
BaseClass extends DomainObject {
...
// Fill in blank here where this class's @Id will use a unique sequence generator
// bonus points for any sort of automatic assignment of generator names that might
//prevent me from having to instrument all my domain objects uniquely
...
}
注:
- 我不具体需要的基类发电机,所以,如果有必要我要删除它,没问题。
- 这是一个oracle9i db如果适用
- 休眠3.4访问用户
- 弹簧2.5可以作为很好
感谢
解决方案
好了这里就是我结束了解决这个问题:
基类:
@MappedSuperclass
public abstract class DomainObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@Column(name = "id", updatable = false, nullable = false)
private Long id;
.. rest of class
}
后裔类别:
@Entity
@SequenceGenerator(name="SEQ",sequenceName="SEQ_DB_NAME")
public class BusinessObject extends DomainObject {
...
}
其他提示
我建议你使用的加入继承类型的基类。这将使所有的公共领域的基础表和定义在具体的表。这里是标注为:
@Inheritance(strategy=InheritanceType.JOINED)
一旦这样做了,你几乎可以使用任何排序的选择,因为所有的标识是始终在同一表格。你可以用一个单独的序列,如果你想要的,但它不支持在所有数据库的供应商。我猜这不是一个问题,因为你使用Oracle具体的说明。
我用这个和这似乎运作良好。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
不隶属于 StackOverflow