2009-07-28 161 views
1

有人可以请教如何在Hibernate中定义&地图(使用注释)自定义类型吗?休眠自定义类型定义

例如,给出:

@Entity 
public class Line { 
    private Point startPoint; 
    private Point endPoint; 
} 

public class Point 
{ 
    private double x; 
    private double y; 
} 

与其让点持续作为一个对象,我想看看行坚持这样的:

startPointX,startPointY,endPointX,endPointY

什么适当的方法来做到这一点?

问候

马蒂

回答

2

自定义类型可能不处理这一点的最好方式,因为Point是多值对象。相反,你可以使用@Embeddable

@Entity 
public class Line { 

    @Embedded 
    @AttributeOverrides({ 
     @AttributeOverride(name="x", column = @Column(name="startPointX")), 
     @AttributeOverride(name="y", column = @Column(name="startPointY")) 
    }) 
    private Point startPoint; 

    @Embedded 
    @AttributeOverrides({ 
     @AttributeOverride(name="x", column = @Column(name="endPointX")), 
     @AttributeOverride(name="y", column = @Column(name="endPointY")) 
    }) 
    private Point endPoint; 
} 

@Embeddable 
public class Point 
{ 
    private double x; 
    private double y; 
} 

它变得非常棘手,当涉及到列映射,因为你需要override them to stop the two points from clashing