序列化OrientDB RecordID时无限递归

2024-01-11

在我的架构中,我有一个像这样的抽象类:

@JsonAutoDetect(JsonMethod.NONE)
public abstract class AbstractEntity {

    @Id private Object id;
    @Version private Integer version;

    public AbstractEntity() {}

    @JsonProperty // this annotation causes infinite recursion
    public Object getId() { return id; }

}

此类用作每个实体的超类,例如:

@JsonAutoDetect(JsonMethod.NONE)
public class Usuario extends AbstractEntity {

    private Cadastro cadastro;

    protected Usuario() {}

    public Usuario(Cadastro cadastro) {
        setCadastro(cadastro);
    }

    @JsonProperty
    public Cadastro getCadastro() { return cadastro; }

    @JsonProperty
    public void setCadastro(Cadastro cadastro) { this.cadastro = cadastro; }

}

我正在设计一个 REST 层,它允许用户通过 JSON 请求/响应在数据库中创建记录:

@POST
@Path("cadastrar")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response cadastrar(@Context HttpServletRequest request, Cadastro cadastro) {
    OObjectDatabaseTx bd = (OObjectDatabaseTx) request.getAttribute("object.database.tx");

    try {

        bd.begin();
        Usuario usuario = new Usuario(cadastro);
        usuario = bd.save(usuario);
        bd.commit();

        String json = new ObjectMapper().writeValueAsString(usuario);
        Response response = Response.status(HttpURLConnection.HTTP_CREATED).entity(json).build();

        return response;
        (...)

然而,在最后一个方法中,当我调用 Jackson 来序列化我新创建的实体(在writeValueAsString方法),我得到无限递归:

org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain:
  com.orientechnologies.orient.core.id.ORecordId["record"]->com.orientechnologies.orient.core.record.impl.ODocument["identity"]
->com.orientechnologies.orient.core.id.ORecordId["record"]->com.orientechnologies.orient.core.record.impl.ODocument["identity"]
->com.orientechnologies.orient.core.id.ORecordId["record"]->com.orientechnologies.orient.core.record.impl.ODoc...

我可以通过删除来避免无限递归@JsonProperty from getId中的方法AbstractEntity班级。然而,这样一来id属性不会出现在 JSON 响应中。

那么,我该如何序列化id财产?

Thanks!


Jackson 支持循环引用吗?是这样吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

序列化OrientDB RecordID时无限递归 的相关文章

  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • SAML 服务提供商 Spring Security

    当使用预先配置的服务提供者元数据时 在 Spring Security 中 是否应该有 2 个用于扩展元数据委托的 bean 定义 一份用于 IDP 元数据 一份用于 SP 元数据
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 欧洲中部时间 14 日 3 月 30 日星期五 00:00:00 至 日/月/年

    我尝试解析格式日期Fri Mar 30 00 00 00 CET 14至 日 月 年 这是我的代码 SimpleDateFormat formatter new SimpleDateFormat dd MM yyyy System out
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • F# 4 中的编译器错误?

    我有一些 F 4 0 源代码 可以在调试中正常编译 但在发布中则不行 没有条件定义 推断类型没有变化 我能想到的也没有其他东西可以向我解释这种差异 我真的偶然发现了编译器错误吗 这是有问题的代码片段 let oldItems userDis
  • Shapely 中两个几何体最近点的坐标

    有一条折线 其顶点坐标列表 x1 y1 x2 y2 x3 y3 和一个点 x y 在身材匀称中 geometry1 distance geometry2 返回两个几何图形之间的最短距离 gt gt gt from shapely geome
  • 将数据从 Excel 复制到记事本

    我使用以下命令将数据从 Excel 复制到记事本SendKeysExcel VBA 函数 我希望避免使用 sendkeys 我有这个代码 sub test dim wb as Workbook set wb C Documents test
  • 如何从 NSURLProtocol 内部获取请求 UIWebView

    我的应用程序使用 NSURLProtocol 的子类 应用程序中有多个 UIWebView 对于 NSURLProtocol 中实现的特定算法 我需要知道哪一个 UIWebView 发送请求 我的理解是 self client 返回的对象应
  • Shell 脚本 - Shell 变量不保留值

    bin bash while true do if eq 0 then result operand1 operand2 result operand1 operand2 result operand1 operand2 if result
  • 将列表元素追加到python中的列表列表中

    给出以下列表 list1 1 2 3 4 5 6 7 8 list2 10 11 12 13 最好的改变方式是什么list1所以它变成了Python中的以下列表 1 2 10 3 4 11 5 6 12 7 8 13 您可以使用zip x
  • anorm joda-time - 本地日期时间支持

    与 Anorm 2 5 2 SQL s insert into user name registered date values name registered date on name gt user name registered da
  • Hibernate Search - 如何默认列出所有记录

    我正在使用 Hibernate 搜索 我的 jsp 页面中有一个搜索文本框 如果我输入一些文本 它会返回正确的结果 但是 如果我留空消息并单击搜索按钮 它不会返回任何记录 Code Session session HibernateUtil
  • 将 COALESCE 与 Group by 结合使用

    我有一个表 其中包含如下数据 pid category name subcategoryname 424 Bathing Infant Care Baby Lotion 428 Bathing Infant Care Baby Lotion
  • QtWidgets.QFileDialog.getOpenFileName 返回一个元组

    我最近更新到了 Qt5 for Python 的新版本 在此过程中 我不得不根据发生的一些显着变化来更改我的代码 我想深入了解我创建的这行代码 这感觉像是一种肮脏的方式来解决获得一个问题的问题string代替tuple从函数 注意 0 在该
  • 嵌套 JSON:如何向对象添加(推送)新项目?

    我刚刚从数组 对象和 JSON 开始 所以希望我在这里忽略了一些简单的东西 我在尝试时遇到错误添加 推送 我的 json 对象中的一个新项目 我遇到以下错误 Result of expression library push undefin
  • 如何更改模式视图 iOS 6 上的状态栏

    我有以下星座 主视图 自定义 UIViewController 无导航控制器或导航栏 包含一个按钮 该按钮以模态方式连接到第二个表视图控制器 该控制器嵌入在导航控制器中 MainView gt 导航控制器 gt TableView 在 Ma
  • 生成后如何在expect shell脚本中获取子进程pid

    脚本的一部分a exp usr bin expect spawn ssh qTfnN D port user host expect assword 我怎样才能得到pid子进程 ssh 如果我在 bash shell 中执行这些 而不是在脚
  • 如何告诉 pyximport 使用 cython --cplus 选项?

    pyximport 非常方便 但我不知道如何让它使用 Cython 的 C 语言选项 从命令行运行cython cplus foo pyx 如何使用 pyximport 实现等效功能 谢谢 让 Cython 创建 C 文件的一种方法是使用
  • Javascript 对引用与值定义的变量的混淆

    我了解 javascript 语言的以下属性 var bar 1 var foo bar bar something entirely different foo is still 1 然而 当尝试将此逻辑应用于对象时 它的行为似乎有所不同
  • C 中变量的作用域与生命周期

    有人可以准确解释 C 中变量的范围和生命周期的概念吗 在 C 中是否有所不同 我对范围和生活感到困惑 变量的 范围 是源代码的一个区域 您可以在其中引用该变量 生命周期 是程序执行期间存在的时间 默认情况下 局部变量的生命周期与其作用域相同
  • 如何在 Twig 中调用“time_diff”过滤器

    我怎样才能调用 时间差 Twig 中的函数 The code post created at time diff Output The filter time diff does not exist 如果您使用 Symfony 2 并想使用
  • 即使提供访问令牌后,Google 选择器仍要求登录

    首先 经过一些研究 我发现很多人都遇到过这个问题 但我没有找到任何具体的解决方案 说到这个问题 客观的 我想将谷歌驱动器与我的应用程序集成 以便用户可以从我的应用程序将文件上传到他们的驱动器 因此 用户首先必须将其驱动器与应用程序集成 然后
  • 循环并将对象推入数组

    HTML div class row div class col xs 5 stateName Kuala Lumpur div div class col xs 7 div div
  • 序列化OrientDB RecordID时无限递归

    在我的架构中 我有一个像这样的抽象类 JsonAutoDetect JsonMethod NONE public abstract class AbstractEntity Id private Object id Version priv