问题似乎是Hibernate引发了一个异常(因此当前事务无效),但是随后您尝试在该会话中继续执行更多操作。
正确的方法是将您使用的测试分为2部分,一部分测试空作者,另一部分测试有效作者。
在生产代码(例如控制器)上,您需要重新启动操作(关闭事务,重新启动流程)才能继续。但是,考虑到游戏管理交易的方式,通常的行为是在发生错误之后,您只会向用户返回错误消息。

问题似乎是Hibernate引发了一个异常(因此当前事务无效),但是随后您尝试在该会话中继续执行更多操作。
正确的方法是将您使用的测试分为2部分,一部分测试空作者,另一部分测试有效作者。
在生产代码(例如控制器)上,您需要重新启动操作(关闭事务,重新启动流程)才能继续。但是,考虑到游戏管理交易的方式,通常的行为是在发生错误之后,您只会向用户返回错误消息。