休眠。不同项目中同一对一映射的不同行为

时间:2014-11-23 18:03:06

标签: java hibernate one-to-one

我已映射实体:

Entity
@Table(name="user_content")
public class UserContent {
    @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "content"))
    @Id
    @GeneratedValue(generator = "generator")
    @Column(name = "content_id", unique = true, nullable = false)
    private Long contentId;

    @Column(name = "name")
    String name;

    @Column(name = "moderate_comment")
    String moderateComment;

    @OneToOne(fetch = FetchType.LAZY)
    @PrimaryKeyJoinColumn
    Content content;   


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getModerateComment() {
        return moderateComment;
    }

    public void setModerateComment(String moderateComment) {
        this.moderateComment = moderateComment;
    }

    public Content getContent() {
        return content;
    }

    public void setContent(Content content) {
        this.content = content;
    }
}

@Entity
@Table(name = "content")
public class Content {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "content_id", unique = true, nullable = false)
    private Long contentId;


    @OneToOne(fetch = FetchType.LAZY, mappedBy = "content", cascade = CascadeType.ALL)
    UserContent userContent;


    public UserContent getUserContent() {
        return userContent;
    }

    public void setUserContent(UserContent userContent) {
        this.userContent = userContent;
    }

    public Long getContentId() {
        return this.contentId;
    }

    public void setContentId(Long id) {
        this.contentId = id;
    }
}

我有2个项目,我将hibernate.hbm2ddl.auto设置为create。我很困惑,但这段代码在我的不同项目中创建了不同的数据库。

首先

enter image description here

这是预期和期望的行为。

第二
enter image description here

正如你所看到的那样,缺少了现实。

我不明白在哪里可以查找此问题的原因。

Pleasr帮助找到。

1 个答案:

答案 0 :(得分:0)

我浪费了很多时间,最后我注意到第二个varian不起作用,因为跟随依赖关系被添加到pom.xml

       <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.6.3.Final</version>
        </dependency> 
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>3.3.0.ga</version>
        </dependency>

在我删除他们之后 - 关系变成了创造。