gpt4 book ai didi

java - AttributeOverride 将空值设置为未映射的字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:10 24 4
gpt4 key购买 nike

我有课

@Embeddable
public class MyClass implements Serializable
{
private String field1;
private String field2;
private String field3;

// getters, setters
}

我已经映射类

public class MappedClass implements Serializable
{
@Embedded
@AttributeOverrides(
{
@AttributeOverride(name = "field1", column = @Column(name = "column1")),
@AttributeOverride(name = "field2", column = @Column(name = "column2")),
@AttributeOverride(name = "field3", column = @Column(name = "column3"))
})
private MyClass myClassField1;

@Embedded
@AttributeOverrides(
{
@AttributeOverride(name = "field1", column = @Column(name = "column1")),
@AttributeOverride(name = "field2", column = @Column(name = "column2")),
})
private MyClass myClassField2;

// setters, getters

}

我希望 myClassField2 中的“filed3”为“null”,因为“field3”没有数据库映射。我能做些什么? “field3”列中“field3”的 JPA 搜索值

在Hibernate中全部通过正常!

   <component name="myClassField1" class="MappedClass">
<property name="field1" type="string" column="column1" />
<property name="field2" type="string" column="column2" />
<property name="field3" type="string" column="column3" />
<component/>

<component name="myClassField2" class="MappedClass">
<property name="field1" type="string" column="column1" />
<property name="field2" type="string" column="column2" />
<component/>

但是我在 JPA 中需要这个

最佳答案

你想做的事是不可能的。一个字段要么是持久的,要么是短暂的。它不能有时是一个,有时是另一个。

考虑定义一个只有两个字段的 MyClass1,以及一个扩展 MyClass1 并添加第三个字段的 MyClass2。将第一个用于 myClassField2,将第二个用于 myClassField1

请注意,在您的示例中,您将 column1 和 column2 映射了两次,这也是不正确的。

关于java - AttributeOverride 将空值设置为未映射的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634936/

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