当前位置: 首页 > 面试题库 >

@OneToOne返回为ManyToOneType

钱卓君
2023-03-14
问题内容

我有以下POJO:

public class SampleBean1 {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    protected String id;

    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="OneToOneID")
    protected SampleBean1 oneToOne;

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name="OneToManyID")
    protected List<SampleBean1> oneToMany;

    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="ManyToOneID")
    protected SampleBean1 manyToOne;

    @ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinTable(name="SampleBeanManyToMany",
            html" target="_blank">joinColumns={@JoinColumn(name="LeftID")},
            inverseJoinColumns={@JoinColumn(name="RightID")})
    @IndexColumn(name="ManyToManyIndex")
    protected List<SampleBean1> manyToMany;

    ...
}

我正在建立一个库来检测OneToOne或ManyToOne(并进行适当的操作)。它总是作为ManyToOne回来。

``

//Get the class' metadata
ClassMetadata cmd=sf.getClassMetadata(o.getClass());

for(String propertyName:cmd.getPropertyNames()){org.hibernate.type.Type
propertyType = cmd.getPropertyType(propertyName);

//Handle ___ToOne
if (propertyType.isEntityType()){
    EntityType et=(EntityType)propertyType;
    System.out.printf("%s=%s\n",propertyName,et.isOneToOne()?"true":"false");
}

}

这是我得到的:

manyToOne = false
oneToOne =假

在调试器中,“ oneToOne”的类型为ManyToOneType!我做错了还是这是hibernate缺陷?

编辑:这是OneToOne的工作方式。让我们创建三个SampleBeans(SB1,SB2,SB3),如下面的注释所述。首先,以POJO形式的数据:

SB1.oneToOne = SB2
SB2.oneToOne = SB3
SB3.oneToOne =空

再次以数据库形式提供数据:

ID | OneToOneID
1 | 2
2 | 3
3 |空

只要OneToOneID具有唯一约束,这种关系类型就是OneToOne吗?还有另一种方法来建模OneToOne吗?请注意,上面的POJO是单向的OneToOne。这可能是问题吗?


问题答案:

现在,这要清楚得多,谢谢。

确实是SampleBean1在两种情况下(例如实体本身和OneToOne映射的属性)还是错别字?如果它们相同,我很确定这是非法的(您如何认为映射会起作用)?我有点惊讶它被悄悄降级为“多对一”而不是抛出错误,但是也许这就是Hibernate
Annotations映射器所做的。



 类似资料:
  • 根据JSON规范,表示null值的正确方法是文字。 预期结果: 实际结果:

  • 我正试图从使用observable转换下面的observable代码。使用可管道操作符创建到。 我已经尝试了下面的方法,但是我得到了一个转换错误,无法转换可观察的类型。看不见的。如有任何帮助,我们将不胜感激。

  • 我在typescript中有一个handleChange函数,我在另一个函数中调用该函数,将文本字段中的更改值发送到mobx树。但是,当我设置并稍后将其记录到函数中时,name变量将返回为“currentTarget”,而不是我在renderExtField函数中指定的name属性,并且该值未定义。 我通过调用renderHexTextField函数来呈现许多不同的文本字段,该函数包含两个参数。首

  • 我有一个任务,我们要创造一个石头,纸,剪刀的游戏。它指定我们必须创建一个抽象的“工具”类,其中有三个子类:“ToolRock”、“ToolPaper”、“ToolScissors”。抽象类应该有一个“+getFeagnet():tool”函数(用斜体写成)。 我的假设是做一个像这样的抽象函数: RockTool类被指定为具有函数“+get弱点():tool”(不是用斜体写的),我的想法是创建一个覆

  • 问题内容: 我有一个javascript函数,该函数调用通用函数对服务器进行ajax调用。我需要从ajax调用的回调函数中检索结果(true / false),但是我得到的结果始终是’undefined’。 如果没有我的全部逻辑,泛型函数的超级简化版本将是: 调用它的函数将类似于: “结果”变量始终为“未定义”,并且对其进行调试,我可以看到正在执行回调函数的“返回真”行。 为什么会这样?如何将返回

  • 为什么numeric_limits::min返回一个负值为int,但正值为例如浮动和双? 输出: 参考文献: 返回可由数字类型T表示的最小有限值。 对于具有反规范化的浮点类型,min返回最小的正规范化值。请注意,这种行为可能是意外的,特别是与整型类型的min行为相比。要查找没有值小于它的值,请使用。 min仅对有界类型和无界无符号类型有意义,也就是说,表示无穷多个负值的类型没有意义的最小值。