0

我有一个 play2 项目,我想创建一个新产品。一个产品包括一个存储在多个表中的 KeyInfo。

这是我新产品的模板

@(newProductForm:Form[models.Product], keyInfoList: List[Keyinfo] )
@adminMain(""){
@helper.form(action = routes.Admin.insertNewProduct()) {

    @helper.inputText(
        newProductForm("name"),
        'label -> "name",
        'type -> "name"
    )

    @helper.inputText(
        newProductForm("price"),
        'label -> "price",
        'type -> "price"
    )

    @helper.inputText(
        newProductForm("shortDescription"),
        'label -> "shortDescription",
        'type -> "shortDescription"
    )

    @helper.inputText(
        newProductForm("description"),
        'label -> "description",
        'type -> "description"
    )


    @helper.select(
    newProductForm("keyinfo"),
    helper.options(
        for(info <- keyInfoList) yield info.keyinformation

        )
    )

    <button type="submit">Add</button>
 }
}

keyinfo 的选择助手正在从表中正确获取所有字段名。现在的问题是,KeyInformation 的 id 没有存储在 ProductTable 中。

这是保存产品的控制器功能

    public static Result insertNewProduct() {
    Form<Product> productForm = form(Product.class).bindFromRequest();
    return ok(showNewProduct.render(Product.create(productForm.get())));

    }

以及具有创建功能的产品模型

@Entity
public class Product extends Model {

@Id
//@Constraints.Required
//@Formats.NonEmpty
@Column(name="id")
public Integer id;

@Constraints.Required
public String name;

@Constraints.Required
public Float price;

@Constraints.Required
@Column(name="short_Description")
public String shortDescription;

@Constraints.Required
public String description;

@ManyToOne
@Constraints.Required
public Keyinfo keyinfo;



public static Product create(Product product){
    product.save();
    return product;
}

我希望有人能帮助我

4

2 回答 2

0

在没有查看整个项目的情况下不确定根本原因,但为了帮助您找到问题,您可以在尝试保存时转储调试消息以检查值:

public static Product create(Product product){
    play.Logger.info("Saving ... product name: " + product.name);
    play.Logger.info("Saving ... product key info: " + product.keyinfo.toString());
    ... 
    product.save();
    return product;
}
于 2013-09-16T20:09:07.873 回答
0

如果您使用的是 ebean,您可能需要先显式保存 keyInfo,然后设置 product.keyInfo 并保存产品。

于 2014-02-03T20:09:54.270 回答