gpt4 book ai didi

java - 如何告诉 JPA 使用简单类的字段作为持久值?

转载 作者:搜寻专家 更新时间:2023-10-30 23:20:28 26 4
gpt4 key购买 nike

考虑这个类:

@Entity
class Bar {
@Id
private long id;
private FooId fooId;
/* ... */
}

Foo 基本上只是:

class FooId {
private String id;
/* ... */
}

我(当然)收到“基本属性只能是以下类型:...”的错误。

有没有办法告诉 JPA(或 EclipseLink)将我在 Bar 中的 fooId 字段视为字符串?

我使用某种“包装器”类型而不是普通字符串的原因是我想在我的 API 中强制执行一些类型安全。

E. G。 getAllFooWithBaz(FooId fooId, BazId bazId) 而不是 getAllFooWithBaz(String fooId, String bazId)

或者是否有更好的方法来实现这一目标?

最佳答案

这是一个常见的要求。试试这个:

@Entity
class Bar {
@EmbeddedId
private FooId fooId;
/* ... */
}

和:

@Embeddable
class FooId {
private String id;
/* ... */
}

或(底层数据库架构和 FooId 保持不变):

@Entity
@IdClass(FooId.class)
class Bar {
@Id
private String fooId;
/* ... */
}

关于java - 如何告诉 JPA 使用简单类的字段作为持久值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com