日期:2014-05-20  浏览次数:20609 次

关于JPA OneToOne 映射(请教各位)
映射关联的 那一端
Java code
@Entity
@Table(name="t3_group")
public class Group {
    
    @Id
    @GeneratedValue
    private int id;
    
    @OneToOne
    
    private User user;



数据库 就会 多了一个 user_id 而 在XML 配置中的 映射关系 是不会多出一个字段的。 如果多出一个字段的话 也可以维护成一对一的 关系 但是那个字段 必须为 唯一性 , 但是 如果 双向 关联的 话 那个 user中 的表也会多出一个字段。


后来我 在 group类里 的 user 映射 做了一些更改

Java code

@Entity
@Table(name="t3_group")
public class Group {
    
    @Id
    @GeneratedValue
    private int id;
    
    @OneToOne
    @JoinColumn(name="id",unique=true)
    private User user;



@JoinColumn(name="id",unique=true)
加了这一行 这样就不会多出 字段了 和 XML的映射一样了,

我也做了相关的测试了 首先把User 保存下 ,然后 在数据库里 手动的保存GROUP ID 保持相同,
Java code
            User user = em.getReference(User.class,2);
            System.out.println(user.getName());
            
            System.out.println(user.getGroup().getIdNumber());


使用查询后 能够将2个相同ID的值 查询出来。。说明关系关联上了。


请问还有什么方法可以 让 jpa 的 一对一 映射 后 数据库表字段 和 XML一样的? 因为我觉得我这样弄又点不对。

因为 我看过数据库了,我那个映射的 id字段 没有 那个 可以选择关联其他主键的 按钮。





------解决方案--------------------
项目开发中表之间从未有物理主外关系,何况one to one