gpt4 book ai didi

java - 使用 Spring Data JPA 访问数据时,会在任一表上创建空列

转载 作者:行者123 更新时间:2023-11-29 20:30:55 25 4
gpt4 key购买 nike

我是 Spring Data JPA 和 Hibernate 的新手。通过查看不同的示例,我为一个实体上的 CRUD 操作构建了一个工作模型,但我在连接两个表以使用 AF_ID 从另一个表(即外键)中提取 AF_NAME 时遇到了麻烦。使用 的名称创建一个空列,并且在访问时返回 null。请检查我是否遵循连接的前提条件,并向我指出任何已知的教程。 I followed this solution and still there is no progress.

@Entity
@Configuration
@EnableAutoConfiguration
@Table(name = "AFF_CONFIG")
public class AFF_CONFIG implements Serializable {

@Id
@Column(name = "AFF_CONFIG_ID")
private String AFF_CONFIG_ID;

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

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

@Column(name = "M_ID")
private Long M_ID;

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

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

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

private AFF aff;

@LazyCollection(LazyCollectionOption.TRUE)
@ManyToOne
@JoinColumn(name = "AFF_ID")
public AFF getAff() {
return aff;
}

public void setAffiliate(AFF aff) {
this.aff = aff;
}

public String getAFF_CONFIG_ID() {
return AFF_CONFIG_ID;
}

public void setAFF_CONFIG_ID(String aFF_CONFIG_ID) {
AFF_CONFIG_ID = aFF_CONFIG_ID;
}

public String getAFF_ID() {
return AFF_ID;
}

public void setAFF_ID(String aFF_ID) {
AFF_ID = AFF_ID;
}

public String getCH_ID() {
return CH_ID;
}

public void setCHANNEL_ID(String cH_ID) {
CH_ID = cH_ID;
}

public Long getM_ID() {
return M_ID;
}

public void setM_ID(Long m_ID) {
M_ID = m_ID;
}

public String getKEY() {
return KEY;
}

public void setKEY(String kEY) {
KEY = kEY;
}

public String getVALUE() {
return VALUE;
}

public void setVALUE(String vALUE) {
VALUE = vALUE;
}

public String getSYSTEM() {
return SYSTEM;
}

public void setSYSTEM(String sYSTEM) {
SYSTEM = sYSTEM;
}

第二个实体是:

@Entity
@Table(name = "AFF")
public class AFF implements Serializable {

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

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

@Id
@Column(name = "AFF_ID")
private String AFF_ID;

private Set<AFF_CONFIG> someAff = new HashSet<AFF_CONFIG>();

@LazyCollection(LazyCollectionOption.TRUE)
@OneToMany(cascade = CascadeType.ALL, mappedBy = "aff")

public Set<AFF_CONFIG> getSomeAff() {
return someAff;
}

public void setSomeAff(Set<AFF_CONFIG> someAff) {
this.someAff = someAff;
}

public String getAFF_ID() {
return AFF_ID;
}

public void setAFF_ID(String aFF_ID) {
AFF_ID = aFF_ID;
}

public String getAFF_NAME() {
return AFF_NAME;
}

public void setAFF_NAME(String aFF_NAME) {
AFF_NAME = aFF_NAME;
}

public String getAFF_CODE() {
return AFF_CODE;
}

public void setAFF_CODE(String aFF_CODE) {
AFF_CODE = aFF_CODE;
}

由于这是多对一关系,我在一个关系中创建了集合类型,在另一个关系中创建了对象类型(如其他地方定义的那样)。通过扩展 CRUD 并添加查询来创建存储库。删除一堆不同的注释,我将它们包含在内是希望解决空条目问题。

@Repository
public interface MarketRepository extends CrudRepository<AFF_CONFIG,String> {

Page<AFF_CONFIG> findAll(Pageable pageable);

@Query("Select a,b from AFF_CONFIG a, AFF b where a.AFF_ID = b.AFF_ID" )
public List<AFF_CONFIG> getAffData();
}

即使经过一些修补,应用程序也能正常工作,直到我添加了这些注释。现在出现这个错误:

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: aff.

最佳答案

我在主管的帮助下解决了这个问题。看来我们必须遵循类和变量的命名规范。还有一处更正是删除集合类型对象并将其更改为仅对象(删除了 aff 类中的 set)。稍后我会将更正后的内容发布出来,以进行比较和对比。

关于java - 使用 Spring Data JPA 访问数据时,会在任一表上创建空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39070118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com