我可以使用Spring将带有@Entity注释的模型类的实例注入控制器吗?

时间:2015-01-08 10:10:35

标签: java spring hibernate spring-mvc annotations

我在春天很新,我有以下疑问。在Web应用程序中,我有以下映射数据库表的实体类:

@Entity
@Table(name = "KM_PROJECT_INFO")
public class KM_ProjectInfo implements Serializable {

    @Id
    @GeneratedValue
    private Long idProjectInfo;

    @Column(name = "name")
    private String name;

    @Column(name = "technology")
    private String technology;

    @ManyToOne
    @JoinColumn(name = "idCountry")
    private KMCountry country;

    @Column(name = "power")
    private long power;

    @Column(name = "cod")
    private String cod;

    @ManyToOne
    @JoinColumn(name = "idProjectInfoStatus")
    private KM_ProjectInfoStatus status;

    @Column(name = "folderTech")
    private long folderTech;

    @Column(name = "folderProject")
    private long folderProject;

    // GETTER & SETTER
}

在视图中,有一个表单,用户可以在其中插入前一个实体类的字段值。当用户单击此表单的提交按钮时,它将执行控制器的操作(在特定情况下,它是一个Struts 2动作控制器,但我认为这并不重要)。

在此操作中,我必须将用户插入的值检索到表单字段中,并使用这些值来设置上一个实体类的匹配字段,然后我必须使用Hibernate将其保留在数据库上。

所以我的疑问是:使用 @Entity 注释对前一个实体类进行了注释。我可以简单地将它注入我的控制器吗?我可以注入一个带有 @Entity

的类的实例

TNX

3 个答案:

答案 0 :(得分:1)

你可以实现这一点',不会自动发生,因为@Entity没有将类标记为一个spring bean。您可以将它设置为Spring bean,但是Spring框架将接管管理实体对象的生命周期,该实体对象应该是JPA框架的独占角色。以明智的方式开展这项工作将是一场可怕的斗争。

幸运的是,根据您的描述,您不需要这样做,只需创建实体的实例,用form params填充它并将对象传递给您的服务或DAO。

答案 1 :(得分:0)

您只需使用简单的java对象创建来创建对象:

KM_ProjectInfo obj = new KM_ProjectInfo();

然后使用setter方法设置属性并执行数据库操作。您不需要使用spring bean创建。

答案 2 :(得分:0)

您不需要将此作为弹簧豆注入控制器。

  • 只需创建实体的实例。
  • 根据表单参数设置实体字段。
  • 将实体保留在数据库中。