gpt4 book ai didi

java - @列名忽略JPA

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:10 26 4
gpt4 key购买 nike

将 Google App Engine 与 MySQL 结合使用

JPA 忽略我的列别名

我尝试声明变量:

@Column(name = "fk_location_id") 
private Long locationId;

我也尝试过在 getter 上声明:

@Column(name = "fk_location_id") 
public Long getLocationId() {
return locationId;
}

我也尝试过对两者进行声明

没有任何作用。只是抛出错误:

Caused by: org.datanucleus.store.rdbms.exceptions.MissingColumnException: Required columns missing from table fk_location_id

我在 google 上搜索并找到了与 Hibernate 相关的内容,但不相信我正在使用它?

这是我的 persistence.xml 文件

<property name="datanucleus.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
<property name="datanucleus.ConnectionURL" value="jdbc://mydb..." />
<property name="datanucleus.ConnectionUserName" value="user" />
<property name="datanucleus.ConnectionPassword" value="pass" />
<property name="datanucleus.autoStartMechanism" value="None" />
<property name="datanucleus.validateTables" value="true" />
<property name="datanucleus.validateConstraints" value="true" />
<property name="datanucleus.validateColumns" value="true" />
<property name="datanucleus.DetachAllOnCommit" value="true" />
<property name="datanucleus.maxFetchDepth" value="1" />
<property name="datanucleus.storeManagerType" value="rdbms" />

这是表的架构:

CREATE TABLE `sites` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`fk_location_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

如何查询数据库:

EntityManagerFactory factory;
factory = Persistence.createEntityManagerFactory(Globals.PERSISTENCE_UNIT_NAME);
EntityManager em = factory.createEntityManager();

Query q = em.createQuery("select t from Site t");
List<Site> siteList = q.getResultList();

Java 类:

@Entity
@Table(name = "sites")
public class Site {

private Long id;
private String name;
private Long locationId;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}

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

public String getName() {
return name;
}

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


public Long getLocationId() {
return locationId;
}

public void setLocationId(Long locationId) {
this.locationId = locationId;
}

}

错误告诉 FKLOCATIONID 列未找到,因此它在应该搜索 fk_location_id 时搜索 FKLOCATIONID

最佳答案

确保@Column 注释来自javax.persistence,而不是来自JDO 或其他地方。 DataNucleus 只能使用 JDO 或 JPA 注释,但不能混合使用两者

关于java - @列名忽略JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749007/

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