我正在使用休眠注释、spring、sessionFactory 并在 context.xml 中定义所有内容(就像这样..)
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>mypackage.model.Attributes</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>
在我的实体上,我有几个属性,一个是 id,另一个是我需要自动生成的字符串值“externalId”。(例如,它可能是“dev_”,后跟代表 id 的 5 位数值。因此,如果 id 为 4,则 externalId 将为“dev_00004”)
@Entity
@Table(name="ATTRIBUTES")
public class Attributes {
private Long id;
private String externalId;
...
...
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column( name = "ID" )
public Long getId() {
return id;
}
public void setId( Long p_id ) {
id = p_id;
}
@Column(name = "EXTERNALID")
public String getExternalId() {
return externalId;
}
public void setExternalId(String p_externalId) {
externalId = p_externalId;
}
...
...
有谁知道我怎么能做到这一点?我查看了@PrePersist,但所有 dao 等都使用 saveOrUpdate ,两者似乎并没有齐头并进。我想也许@preUpdate 可能会起作用,但是这似乎并没有被调用。谁能给我任何关于如何实现这一目标的想法?
谢谢!