小编BKo*_*och的帖子

实体不通过Spring(CrudRepository)在TomEE上持久化

我尝试使用Springs CrudRepository接口将实体持久化到PostgreSQL数据库时遇到问题.我在TomEE上调整正确的值并调整Spring本身的配置时遇到了一些问题.我曾尝试使用hibernate,但问题变得更糟,所以我切换回与TomEE捆绑在一起的OpenJpa.

我有一些普通JavaEE的经验,我正在创建这个应用程序来学习Spring,我的一个朋友需要一个Spring应用程序来在基于TomEE的ApplicationServer上进行部署,因此这两个是需求.我可能会对我附加的代码量有点过分,但我宁愿让你看看有什么,所以你得到了一个很好的概述.

我开发的组件以及我正在做什么,期待和实际看到的简要描述.组件:

  • CoworkerController(RESTful Spring Controller)
  • CoworkerService(Spring Service与Controller和Repository交互)
  • CoworkerRepository(扩展Spring CrudRepository)
  • 同事(应该坚持的实体)

我的行动流程:

  • 通过curl发送带有firstname lastname的POST到RESTful服务
  • 获取具有持久实体ID的状态200
  • 如果我可以查询我创建的Coworker,请检查PostgreSQL和RESTful服务

我期待的是:

  • 控制器接受POST并调用服务来保持同事
  • 服务告诉Repository保存Coworker
  • 存储库通过Spring魔术持续存储Coworker实体
  • Spring/OpenJPA魔术连接到DataSource,创建ID并在成功时返回Entity
  • 在此期间查看SQL查询
  • 存储库接收持久化实体并返回服务
  • 服务将实体返回给Controller
  • Controller将Entity.id返回给REST服务的调用者

我看到的和我看不到的但希望看到的:

  • 控制器按预期工作
  • 服务日志更正用户信息
  • @PrePersist创建一个Date对象(Logger)
  • 有关openjpa序列查询的SQL语句日志
  • MISSING:没有关于持久化我的实体的SQL INSERT语句
  • 存储库将新的Coworker返回给服务
  • 服务使用creationDate和id记录应该是持久化的实体(例如1)
  • Controller将id返回给REST的调用者(例如1)
  • REST和SQL查询都没有显示数据库中的任何同事:(

在通过google,SO和许多教程尝试所有不同类型的故障排除后,我的配置文件变得非常混乱.现在花了几天时间试图找出问题所在,我现在来到这里,希望你能指出我的错误.

Coworker.java

@Entity
public class Coworker implements Serializable {

    @Transient
    Logger logger = LoggerFactory.getLogger(this.getClass());

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long coworkerId;
    private String firstName;
    private String lastName;
    @Temporal(TemporalType.DATE)
    private Date creationDate;
    @Temporal(TemporalType.DATE)
    private Date lastUpdatedDate;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "coworker", fetch = …
Run Code Online (Sandbox Code Playgroud)

java spring persistence tomcat openjpa

6
推荐指数
1
解决办法
5598
查看次数

标签 统计

java ×1

openjpa ×1

persistence ×1

spring ×1

tomcat ×1