小编Gra*_*ych的帖子

复合键类中的@OneToOne注释不起作用

也许有人可以澄清下面的代码有什么问题.当我在嵌入式类中创建一对一关联(它是复合主键)时,如下面的代码所示:

@Entity
public class Test {

    @EmbeddedId
    private TestId id;

    @Embeddable
    public static class TestId implements Serializable {
        private static final long serialVersionUID = 1950072763330622759L;

        @OneToOne(optional = false)
        @JoinColumn(name = "linkedTable_id")
        private LinkedTable linkedTable;

    }
    ..........
}
Run Code Online (Sandbox Code Playgroud)

我得到以下堆栈跟踪:

--------------------------------------------

Caused by: java.lang.NullPointerException
    at org.hibernate.cfg.AnnotationBinder.bindOneToOne(AnnotationBinder.java:1867)
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1286)
    at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:1662)
    at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1695)
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1171)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:706)
    at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:452)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:268)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1121)
    at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1211)
    at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:847)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:178)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:235)
    ... 26 more
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我将关联类型更改为多对一并且不能与一对一一起工作,上面的示例是如何工作的?

java hibernate jpa

5
推荐指数
1
解决办法
6732
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1