当前位置: 首页 > 知识库问答 >
问题:

“基本”属性类型不应是持久性实体

澹台星光
2023-03-14

我正在引用另一个实体类中的实体,并出现此错误。下面是示例代码。我有这些课程在坚持。还有xml。

是什么导致了这个问题?我正在使用Spring数据JPA和Hibernate。

import javax.persistence.*;
@Entity
@Table(name = "users", schema = "university")
public class UsersEntity {
    private long id;

    @JoinColumn(name = "address_id", nullable = false)
    private Address address;

    @Id
    @Column(name = "id")
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}
import javax.persistence.*;
@Entity
@Table(name = "address", schema = "university")
public class AddressEntity {
    private long id;
    private String street;

    @Id
    @Column(name = "id")
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Basic
    @Column(name = "street")
    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }
}

共有2个答案

方斌
2023-03-14

您错过了实体之间的关系类型。E、 g.您可以将单向@OneToOne定义为

//...
public class UsersEntity {
//..
  @OneToOne(mappedBy = "ugdArea", fetch = FetchType.LAZY)
  @JoinColumn(name = "address_id", nullable = false)
  private Address address;
//...
}
万嘉石
2023-03-14

因此,请尝试以下操作:

@Entity
@Table(name = "users", schema = "university")
public class UsersEntity {
    private Long id;

    private AddressEntity address;

    @Id
    @Column(name = "id")
    public Long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

   @OneToOne 
   @JoinColumn(name = "address_id", nullable = false)
   public AddressEntity getAddress() {
        return address;
    }

    public void setAddress(AddressEntity address) {
        this.address = address;
    }
}


@Entity
@Table(name = "address", schema = "university")
public class AddressEntity {
    private Long id;
    private String street;

    @Id
    @Column(name = "id")
    public Long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }


    @Column(name = "street")
    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }
}

基本上,我所做的就是长时间替换长时间。并添加了@OneToOne,我删除了@Basic,因为它是可选的。我相信它应该会起作用

 类似资料:
  • 我正在试用IntelliJ IDEA,它警告我一个我不太理解的冬眠协会。 一面: 为了检查一下精神状况,我看了这篇文章,也看了这篇文章。

  • “一对多”属性值类型不应为“持久性实体”

  • 我在我的实体对象中收到以下消息? 基本属性类型不应为IDao 使用方式如下: 我知道这个名字不好,但是把我的道(用存储库注释)注入到我的被注释为Hibernate实体的域对象中有什么问题?而IDao是道类实现的接口...

  • 我正在尝试设置一个属性,该属性将由我的功能测试中的每个方法使用。问题是它在测试之间并没有持续。 这是我的测试类: 我只希望属性在该类中的所有测试中保持不变。

  • 当然,像integer,float或者boolean等类型仍然存在,但是它们全部都会作为对象存在的。基本类型的名字和它们工作方式都是与Java非常相似的,但是有一些不同之处你可能需要考虑到: 数字类型中不会自动转型。举个例子,你不能给Double变量分配一个Int。必须要做一个明确的类型转换,可以使用众多的函数之一: val i:Int=7 val d: Double = i.toDouble()

  • 我正在寻找从经典Akka持久化迁移到Akka持久化类型。在这里找到的Lagom留档:1说“注意:从Lagom持久化(经典)迁移到Akka持久化类型时的唯一限制是需要完全关闭集群。即使所有持久数据都是兼容的,Lagom持久化(经典)和Akka持久化类型也不能共存。” 有人知道这是否适用于服务器可能知道的所有持久实体吗?例如,我使用的服务有3个独立的持久实体。我需要一次迁移所有3个,还是可以一次迁移一