记录几个今天配置Hibernate3.5注解时的问题。
1)关于Hibernate 原XML中的 compose-id (复合主键)用注解配置
有几种方法:
第一种:直接在对应的复合主键上添加@Id
@Entity
public class Employee
{
@Id String empName;
@Id Date birthDay;
第二种:使用@IdClass注解
public class EmployeePK implements Serializable
{
private String empName;
private Date birthDay;
。。。。
@IdClass(EmployeePK.class)
@Entity
public class Employee
{
@Id String empName;
@Id Date birthDay;
第三种:嵌入式的
@Embeddable
public class EmployeePK implements Serializable
{
@Column
private String empName;
@Column
private Date birthDay;
。。。。
@Entity
public class Employee
{
@Id EmployeePK emp;
2)关于Hibernate的注解的包不能自动扫描的问题
这个问题需升级Spring到2.5.6,里面的AnnotationSessionFactoryBean带了一个属性:packagesToScan
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref local="euroSportDataSource" />
</property>
<property name="packagesToScan">
<list>
<value>com.yourcompany.security.obj</value>
<value>com.yourcompany.obj</value>
</list>
</property>
3)关于Hibernate的POJO类存在继承的情况
[color=red]@MappedSuperclass[/color]
public abstract class AbstractCmsDto{}
@Entity
@Table(name="S_RESC")
public class SecRes extends AbstractCmsDto{}
如上这样,在基类中添加[color=red]@MappedSuperclass[/color]注解,并将基类中的字段进行相应的注解。
当然,在子类中可以改写基类中的定义。
1)关于Hibernate 原XML中的 compose-id (复合主键)用注解配置
有几种方法:
第一种:直接在对应的复合主键上添加@Id
@Entity
public class Employee
{
@Id String empName;
@Id Date birthDay;
第二种:使用@IdClass注解
public class EmployeePK implements Serializable
{
private String empName;
private Date birthDay;
。。。。
@IdClass(EmployeePK.class)
@Entity
public class Employee
{
@Id String empName;
@Id Date birthDay;
第三种:嵌入式的
@Embeddable
public class EmployeePK implements Serializable
{
@Column
private String empName;
@Column
private Date birthDay;
。。。。
@Entity
public class Employee
{
@Id EmployeePK emp;
2)关于Hibernate的注解的包不能自动扫描的问题
这个问题需升级Spring到2.5.6,里面的AnnotationSessionFactoryBean带了一个属性:packagesToScan
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref local="euroSportDataSource" />
</property>
<property name="packagesToScan">
<list>
<value>com.yourcompany.security.obj</value>
<value>com.yourcompany.obj</value>
</list>
</property>
3)关于Hibernate的POJO类存在继承的情况
[color=red]@MappedSuperclass[/color]
public abstract class AbstractCmsDto{}
@Entity
@Table(name="S_RESC")
public class SecRes extends AbstractCmsDto{}
如上这样,在基类中添加[color=red]@MappedSuperclass[/color]注解,并将基类中的字段进行相应的注解。
当然,在子类中可以改写基类中的定义。