- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目实体和一个组实体。我可以使用 DAO 中的以下 getter 方法按名称获取项目:
public Project getProject(String name){
Project project = null;
DetachedCriteria criteria = DetachedCriteria.forClass(Project.class);
criteria.add(Restrictions.eq("name", name));
List<Project> projects = getHibernateTemplate().findByCriteria(criteria);
if ((projects != null) && (projects.size() > 0)) {
project = (Project)projects.get(0);
}
return project;
}
而这个完全相同的构建不适用于组 DAO:
public Group getGroup(String name){
Group group = null;
DetachedCriteria criteria = DetachedCriteria.forClass(Group.class);
criteria.add(Restrictions.eq("name", name));
List<Group> groups = getHibernateTemplate().findByCriteria(criteria);
if ((groups != null) && (groups.size() > 0)) {
group = (Group)groups.get(0);
}
return group;
}
这是堆栈跟踪(当我尝试创建一个新组时出现;获取具有提供的名称的组以检查这样的组是否已经存在,如果存在则抛出异常):
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group this_ where this_.name='new_group'' at line 1 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) com.mysql.jdbc.Util.handleNewInstance(Util.java:409) com.mysql.jdbc.Util.getInstance(Util.java:384) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2696) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2105) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2264) org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:187) org.hibernate.loader.Loader.getResultSet(Loader.java:1791) org.hibernate.loader.Loader.doQuery(Loader.java:674) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) org.hibernate.loader.Loader.doList(Loader.java:2217) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2108) org.hibernate.loader.Loader.list(Loader.java:2103) org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) org.hibernate.impl.SessionImpl.list(SessionImpl.java:1570) org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) org.springframework.orm.hibernate3.HibernateTemplate$35.doInHibernate(HibernateTemplate.java:984) org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372) org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:974) org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:967) pl.edu.agh.adam.core.projects.dao.GroupDAO.getGroup(GroupDAO.java:65) pl.edu.agh.adam.core.projects.GroupService.createGroup(GroupService.java:76) pl.edu.agh.adam.core.projects.web.CreateGroupBean.create(CreateGroupBean.java:80) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.sun.el.parser.AstValue.invoke(AstValue.java:234) com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83) javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:88) org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:100) javax.faces.component.UICommand.broadcast(UICommand.java:120) javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:890) javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:234) javax.faces.component.UIViewRoot._process(UIViewRoot.java:1202) javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:623) org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:35) org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:143) org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:93) javax.faces.webapp.FacesServlet.service(FacesServlet.java:189) org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
以下是实体(省略了 getter 和 setter):
@Entity
@Table(name = "group")
public class Group implements Serializable {
private static final long serialVersionUID = 1L;
@Transient
public static final String REF = "Group";
@ManyToMany(targetEntity = pl.edu.agh.adam.core.account.hibernate.User.class)
@JoinTable(name = "group_user", joinColumns = @JoinColumn(name = "group_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))
Set<User> users;
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
@ManyToMany(targetEntity = pl.edu.agh.adam.core.projects.hibernate.Role.class)
@JoinTable(name = "project_group_role", joinColumns = @JoinColumn(name = "group_id"))
@MapKeyJoinColumn(name = "project_id")
Map<Project, Role> projectRoles;
@Transient
public static final String PROP_ID = "id";
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "group_id")
private Long id;
@Transient
public static final String PROP_NAME = "name";
@Column(name = "name", length = 25, unique = true, nullable = false)
private String name;
@Transient
public static final String PROP_PASSWORD = "password";
@Column(name = "password", length = 40)
private String password;
@Transient
public static final String PROP_SUBSCRIBABLE = "subscribable";
@Column(name = "subscribable")
private Boolean subscribable;
}
另一个(工作的):
@Entity
@Table(name = "project")
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@Transient
public static final String REF = "Project";
@ManyToMany(targetEntity = pl.edu.agh.adam.core.projects.hibernate.Tag.class)
@JoinTable(name = "project_tag", joinColumns = @JoinColumn(name = "project_id"), inverseJoinColumns = @JoinColumn(name = "tag_id"))
private List<Tag> tags;
@ManyToMany(targetEntity = pl.edu.agh.adam.core.projects.hibernate.Group.class)
@JoinTable(name = "project_group_role",
joinColumns = @JoinColumn(name = "project_id"),
inverseJoinColumns = @JoinColumn(name = "group_id"))
private Set<Group> groups;
@ManyToMany(targetEntity = pl.edu.agh.adam.core.projects.hibernate.Role.class)
@JoinTable(name = "project_group_role",
joinColumns = @JoinColumn(name = "project_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
@Transient
public static final String PROP_ID = "id";
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "project_id")
private Long id;
@Transient
public static final String PROP_NAME = "name";
@Column(name = "name", length = 60, unique = true, nullable = false)
private String name;
@Transient
public static final String PROP_SHORTNAME = "shortname";
@Column(name = "shortname", length = 25, unique = true)
private String shortname;
@Transient
public static final String PROP_HOMEPAGE = "homepage";
@Column(name = "homepage", length = 60)
private String homepage;
@Transient
public static final String PROP_DESCRIPTION = "description";
@Column(name = "description", columnDefinition = "LONGTEXT")
private String description;
}
还有表结构:团体:-group_id int(11) 自动递增,不为空-name varchar(25) 唯一,不为空-密码 varchar(40)-可订阅的 tinyint(1)
项目
-project_id int(11) 自动递增,不为空-name varchar(60) 唯一,不为空-shortname varchar(25)-主页 varchar(25)-描述文字
我已将 hibernate 查询日志记录到 System.out;它产生以下内容:
select
this_.project_id as project1_3_0_,
this_.description as descript2_3_0_,
this_.homepage as homepage3_0_,
this_.name as name3_0_,
this_.shortname as shortname3_0_
from
project this_
where
this_.name=?
还有那个不工作的:
select
this_.group_id as group1_4_0_,
this_.name as name4_0_,
this_.password as password4_0_,
this_.subscribable as subscrib4_4_0_
from
group this_ where
this_.name=?
这是怎么回事?? :(
最佳答案
我没有立即发现,但 group
是保留关键字,因此生成的查询确实不正确。为 Group
实体使用另一个表名。例如:
@Entity
@Table(name = "groups")
public class Group implements Serializable {
//...
}
关于java - MySQLSyntaxErrorException 尽管一切看起来都很好(Hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076941/
#include #include #include using namespace std::chrono; int main(int arc, char* argv[]) { con
我是 opencv 的新手。当我将 sRGB png 提供给它时,我发现以下代码交换了红色和蓝色 channel 。我应该责怪哪个函数,imread 还是 fromarray? 最佳答案 是的,O
我正在使用以下代码,它缩小了每一行,并且由于某种原因整个用户界面也丢失了。我该如何解决?
它是关于以下设置的:Linux 机器、bash、adb、带有 Busybox 的嵌入式 Linux 目标系统。对于目标系统,以下适用: adb shell echo $SHELL /bin/sh ad
当我在 Android Studio 上创建一个空 fragment 时,它会生成以下代码: /** * A simple {@link Fragment} subclass. * Activit
我正在尝试从 Meteor 应用程序的服务器端发布用户的 Facebook 提要: result = Meteor.http.call 'POST', "https://graph.faceb
目前我有两个不同的查询,它们返回完全相同的结果,但是,更改从中过滤结果的参数会使它们以非常不同的方式运行。 搜索 cartography 时的结果 查询 #1: 22 行/~860 毫秒; SELEC
我已经创建了结构: typedef struct { short s; int i; struct Ss { short s; }; } S;
我想在 Java 中打印反斜杠 t。但每当我尝试时,它实际上都将它作为\t 运算符。双反斜杠不起作用。我该怎么做。 最佳答案 例如通过添加另一个反斜杠来转义反斜杠 System.out.println
我想弄清楚为什么 UIActivityViewController 发送一个稍微转换过的字符串来分享给邮件和微信。 这是我的代码: let activityViewController = UIAct
创建标准 SQLite 游标后,我将使用以下方法遍历条目: while (cursor.moveToNext()) { } 所有行都被正确处理。我读过的所有文档都表明您需要发出 moveToFirst
我正在尝试创建一个基本论坛,但在 SQL 中仅打印一行时遇到问题。这是我的 PHP: {$title}"; } } else { print "failed to reach post
我的新 div 元素 ( ) 似乎隐藏在图像后面。我键入的任何内容都显示在图像后面。我想在背景图片之后继续工作。 这是我的代码: DISPLAY
UPD。一行代码解决了问题:.lean() axplanation here 我在 Model.find(...blablabla : [ {"_id":"578763de6e8e0542195ef4
我在 Ubuntu 16.04 中安装了 Tomcat 8.0.45。我使用 let's encrypt 生成的证书启用了 HTTPS 连接器。它就像一个魅力。但是今天Tomcat无法启动HTTPS连
今天,我在一台全新安装了 Windows 7 Ultimate 64 位的新笔记本电脑上安装了 Visual Studio 2010 Professional。我非常习惯于 Visual Studio
根据 Oracle,我应该能够将 .intValue() 和 .compareTo() 之类的方法应用于 double ,但是当我编写 dbl.toString( ) 例如,在 NetBeans 中,
正在为应用程序开发一些拖放功能,虽然可以使用“重影图像”来完成很多事情,将毒品从一个地方转移到另一个地方,但它们看起来总是有点“褪色” - 因此得名鬼影。是否有可能使这些具有与原始颜色相同的深度?谢谢
我是这方面的新手,很抱歉犯了一些愚蠢的错误。快乐学习。每当我使用 URL : localhost:3000/posts/whatever 时,我都会收到无法获取错误。在你问之前,是的,那是在我将内容放
背景 这自然是合法的: let closure: (Int, Int) -> () = { print($0 + $1) } closure(1, 2) // 3 鉴于,自进化提案实现以来 SE-01
我是一名优秀的程序员,十分优秀!