使用 play / Ebean 将数据保存到数据库中的问题

Issue on saving data into DB using play / Ebean

我有 3 个 类。

  1. 汽车
  2. 用户
  3. 用户汽车

这 3 类 代表 table 进入我的数据库。 UserCars table 链接 Car 和 Users table 并按以下方式构建:

---用户---
内部编号
整数 cars_id
整数 user_id
-----

我尝试使用 Users_car table 来保存与其用户相关的汽车。

这是我的 3 类:
汽车

@Entity
public class Car extends Model{

    @Id
    @GeneratedValue
    public int id; 
    public String brand; 
    public String model; 
    public String fuel;
    public double avg_cons; // Average consumption
    public double c02_cons;  
    public double htva_price; 
    public double leasing_price; 

    public static Finder<String, Car> find = new Finder<String, Car>(
            String.class, Car.class
    ); 

}

用户

@Entity
public class User extends Model{

    @Id
    @GeneratedValue
    public int id;  
    public String name; 
    public String username; 
    public String email; 
    public String password; 
    public String phoneNumber; 
    public Timestamp inscriptionDate;
    @Transient
    public Timeline timeline;

    public User(){}
}

用户汽车

@Entity
@Table(name = "user_cars")
public class UserCars extends Model{

    @Id
    @GeneratedValue
    public int id; 
    @ManyToOne
    public int user_id;  
    @OneToOne
    public int car_id; 

    public UserCars(int userId, int carId){
        this.user_id = userId; 
        this.car_id = carId;
    }

    public static Finder<String, UserCars> find = new Finder<String, UserCars>(
            String.class, UserCars.class
    );
}

这是我保存它的方式:

public static Result saveCar(){
        // Retrieve the current username
        DynamicForm params = Form.form().bindFromRequest();
        String username = params.get("username");
        User current = User.find.where().like("username", username).findUnique(); 
        int currentUserId = current.getId(); 

        // Get data from android and save it to DB
        Car car = Form.form(Car.class).bindFromRequest().get(); 
        int currentCarId = car.id; 
        UserCars userCars = new UserCars(currentUserId, currentCarId); 

        try {
            Ebean.save(car);
            Ebean.save(userCars); 
        } catch (OptimisticLockException e) {
            e.printStackTrace();
            return internalServerError("Car registration failed"); 
        }

        return ok(); 
    }

问题是,在第 int currentCarId = car.id; 行,id 总是 0。 确实 id 仅在我保存汽车时递增 (Ebean.save(car);)。

如何递增 ID,以便正确递增此 ID 以创建正确的 UsersCars 实例?

非常感谢!

您可以在 Cars 和 User .Like 之间创建 ManyToMany 关系

@Entity
public class Car extends Model{

//other fields

@ManyToMany
public List<User> users=new ArrayList<User>();

}

@Entity
public class User extends Model{

 //other fields    

@ManyToMany
public List<Car> users=new ArrayList<Car>();

}

上面的代码将自动创建第三个 table 说 User_Cars(您可以更改名称)具有各自的汽车和用户 ID。

同时勾选 Example