2016-07-26 61 views
0

我制訂一個用戶和管理員之間有許多關係如圖所示的用戶類adminId user表中不保存在一對一的關係springboot

@Entity 
@Table(name = "user") 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "userId") 
    private Long id; 
    @Column(nullable = false) 
    private String name; 
    @Column(unique = true, nullable = false) 
    private String email; 
    @Column(nullable = false) 
    private long timestamp; 

    @OneToOne 
    @JoinColumn(name = "adminId") 
    Admin admin; 

現在我試圖保存用戶通過插入的值爲1至使用休眠的會話工廠的用戶表中的字段adminId如圖

public void save(User user) { 

     //User userAdmin = new User(); 
     long id = 1 ; 
     user.setId(id); 

     getSession().save(user); 
    } 

EDITTED

個關於getter和setter方法,這些都是在管理表中的字段

@Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "adminId") 
    private Long id; 

    @Column(nullable = false) 
    private String name; 

    @Column(nullable = true) 
    private String department; 

我的挑戰是,當我保存,沒有獲取插入(即值爲1)在adminId領域引用管理外鍵在用戶表中。

請協助!

+0

Id和adminId是不一樣的。你可以添加一些更多的例子管理員的樣子,當你想保存用戶 - 你想使用哪個管理員? (我認爲'user.setAdmin(管理員);'是你正在尋找作爲Java方面你有用戶管理員領域) – terjekid

+0

編輯我的問題。將使用1的管理員。即引用管理行中的第一個管理員 –

回答

0

你必須獲得ID 1第一管理實體,然後將其設置爲新用戶:

@Transactional 
    public void save(User user) { 
     Admin admin = getSession.createQuery("from Admin a where a.id = ?) 
           .setParameter(0, 1); 
     user.setAdmin(admin); 
     getSession().save(user); 
    } 
+0

定位參數被視爲棄用;改爲使用命名參數或JPA樣式的位置參數。 –

+0

好吧,只需使用命名參數,無論如何,獲取管理實體解決您的問題? – codependent

+0

當我嘗試保存用戶時,它在用戶表的adminId字段上返回NULL –

相關問題