【问题标题】:Cannot map entities. Fetching one entity gives columns of second entity in first entity columns无法映射实体。获取一个实体在第一个实体列中给出第二个实体的列
【发布时间】:2015-04-08 20:22:43
【问题描述】:

我正在尝试使用 Hibernate 和 JPA 获取实体。但是获取一个实体会尝试在第一个实体中找到第二个实体的列。这是代码:

我有两个实体:

Entity1.java

@Id
@Column(name = "WRITE_PROTECTION_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = FrontendDBTableSequenceNm.WRITE_PROTECTION_ID_SEQ)
@SequenceGenerator(name = FrontendDBTableSequenceNm.WRITE_PROTECTION_ID_SEQ,
sequenceName = FrontendDBTableSequenceNm.WRITE_PROTECTION_ID_SEQ, allocationSize = 1)
private Long id;

/** The division. */
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "DIVISION_ID")
private Entity2 entity2;

Entity2.java

@Id
@Column(name = "DIVISION_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = FrontendDBTableSequenceNm.DIVISION_ID_SEQ)
@SequenceGenerator(name = FrontendDBTableSequenceNm.DIVISION_ID_SEQ, 
sequenceName =  FrontendDBTableSequenceNm.DIVISION_ID_SEQ, allocationSize = 1)
private Long id;

/** The name. */
@Column(name = "DIVISION_NM")
@ChangeLog
private String name;

/** The sort order. */
@Column(name = "SORT_ORDER")
@ChangeLog
private Integer sortOrder;

/** The markets. */
@OneToMany(mappedBy = "division")
private Set<Market> markets;

/** The company. */
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CMPNY_ID")
private Company company;

现在,当我尝试使用存储库获取实体一时:

@Query("from Entity1 wp order by wp.entity2.name")
List<WriteProtection> findAllOrderByDivision();

命中数据库的查询是:

select entity0_.ENTITY_1_ID as WRITE1_20_, 
entity0_.CREATE_BY as CREATE2_20_, 
entity0_.CREATE_TMS as CREATE3_20_, 
entity0_.UPD_BY as UPD4_20_, 
entity0_.UPD_TMS as UPD5_20_, 
entity0_.ENTITY2_ID as ENTITY27_20_, 
entity0_.TREE_LEVEL as TREE6_20_ 
from rmc_dev_rel3.ENTITY_1 entity0_, rmc_dev_rel3.ENTITY2 ENTITY21_ 
where entity0_.ENTITY2_ID=ENTITY21_.ENTITY2_ID order by ENTITY21_.ENTITY2_NM;

所以基本上它正在做的是尝试在第一个实体中找到第二个实体的列。

在这里,“CREATE_BY”、“CREATE_TMS”、“UPD_BY”和“UPD_TMS”列是 entity2 中的列,但查询正在尝试从 entity1 中获取它。

【问题讨论】:

  • 尝试更改查询,如@Query("Select wp from Entity1 wp order by wp.entity2.name")
  • @Ramesh 没用。

标签: java hibernate spring-mvc jpa oracle11g


【解决方案1】:

将查询更改为以下解决了我的问题:

@Query("select wp.id, wp.entity2, wp.treeLevel from Entity1 wp order by wp.entity2.name")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多