简体   繁体   English

使用OneToMany映射时在Hibernate的Join列中获取Null

[英]Getting Null in Join Column in Hibernate when using OneToMany mapping

When using onetomany mapping with mappedby I'm getting null in column of uid of vehicle table. 当将onetomany映射与mappedby一起使用时,我在vehicle表的uid列中得到null

One User can have many vehicle s so OneToMany mapping used .. 一个User可以拥有许多vehicle因此使用了OneToMany映射。

Vehicle table should contain reference of user table id .. Vehicle表应包含user table id引用。

Here I'm getting null under uid column when Vehicle table is displayed .It should contain value of user id . 在这里,当显示Vehicle表格时,在uid列下得到null ,它应该包含user id值。 Without mappedby , it is working fine. 没有mappedby ,它工作正常。

    @Entity
            @Table(name="User_Details")
            public class UserDetails {                               
                private long uid;
                @Column(name="fname")
                private String name;
                private Set<Vehicle> vehicle=new HashSet<Vehicle>();
                public UserDetails() {

                }
                public UserDetails(String name) {

                    this.name = name;

                }

                @Id
                @Column(name="uid")
                @GeneratedValue
                public long getUid() {
                    return uid;
                }
                public void setUid(long uid) {
                    this.uid = uid;
                }
                public String getName() {
                    return name;
                }
                public void setName(String name) {
                    this.name = name;
                }


                @OneToMany(mappedBy="user",cascade = CascadeType.ALL)
                public Set<Vehicle> getVehicle() {
                    return vehicle;
                }
                public void setVehicle(Set<Vehicle> vehicle) {
                    this.vehicle = vehicle;
                }
                }

        @Entity
        @Table(name="Vehicle")
        public class Vehicle {

            private long id;
            @Column(name="vname")
            private String name;
            private UserDetails user;
            public Vehicle() {

            }
            public Vehicle(String name, UserDetails user) {
                super();
                this.name = name;
                this.user = user;
            }

            @Id
            @Column(name="vid")
            @GeneratedValue
            public long getId() {
                return id;
            }
            public void setId(long id) {
                this.id = id;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            @ManyToOne
            @JoinColumn(name = "uid")   **References UserDetails table**
            public UserDetails getUser() {
                return user;
            }
            public void setUser(UserDetails user) {
                this.user = user;
            }

        }
    public class App {


        public static void main(String\[\] args) {

            SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
            Session session=sessionFactory.openSession();
            session.beginTransaction();

            UserDetails user=new UserDetails();
            user.setName("Rohit");


            Vehicle vehicle1=new Vehicle();
            vehicle1.setName("Hyundai1");
            Vehicle vehicle2=new Vehicle();
            vehicle2.setName("Maruti1");

            Set<Vehicle> set = new HashSet<Vehicle>();
            set.add(vehicle1);
            set.add(vehicle2);
            user.setVehicle(set);

            session.save(user);

            session.getTransaction().commit();
            session.close();

        }**][1]][1]




  [1]: https://i.stack.imgur.com/YyhsN.png

Add this to your code 将此添加到您的代码

vehicle1.setUser(user)
vehicle2.setUser(user)

You don't set the owning side (vehicle->user) of the relationship. 您没有设置关系的拥有方(车辆->用户)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM