gpt4 book ai didi

java - 如何使hibernate映射成为创建的表?

转载 作者:行者123 更新时间:2023-12-01 13:20:38 25 4
gpt4 key购买 nike

我尝试为已创建的表仅建模几列。但是 Hibernate 无法执行能够返回应用程序数据的查询。

我正在映射创建的表的模型中执行类似的操作:

@Column(name="LOCALE_ID")
private String locale;

@Id
@Column(name="ID")
private Long ID;

@Column(name="TITLE")
private String title;

public Location () {}

public Long getID() {
return ID;
}

public void setID(Long ID) {
this.ID = ID;
}

public String getLocale() {
return locale;
}

public void setLocale(String locale) {
this.locale = locale;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

执行查询的方法如下所示:

String q = "SELECT l.title FROM " + className +
" l WHERE l.locale = '" + locale + '"';
List<Location> result = null;
try {
Transaction tx = getSession().beginTransaction();
result = (List<Location>)session.createQuery(q).list();
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
}
return result;

当我使用正确的参数调用此方法时,没有返回任何内容,但映射表包含可以使用这些参数获取的数据。

我不知道为什么 hibernate 无法处理创建的表。

也许通过逆向工程来生成模型可以有所帮助,但我不知道如何执行此操作。

对此有什么想法吗?

最佳答案

您正在使用同名但新的变量来隐藏 try/catch block 中的 List 结果,并将查询结果分配给该变量。但你总是返回分配给 null 的外部变量。

String q = "SELECT l.title FROM " + className +
" l WHERE l.locale = '" + locale;
List<Location> result = null;
try {
Transaction tx = getSession().beginTransaction();
result = (List<Location>)session.createQuery(q).list();
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
}
return result;

可能会做得更好

关于java - 如何使hibernate映射成为创建的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043846/

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