版本: Datastax Java driver 3.1.4, Cassandra 3.10
请考虑下表:
create table object_ta
(
objid bigint,
version_date timestamp,
objecttype ascii,
primary key (objid, version_date)
);
和一个映射类:
@Table(name = "object_ta")
public class ObjectTa
{
@Column(name = "objid")
private long objid;
@Column(name = "version_date")
private Instant versionDate;
@Column(name = "objecttype")
private String objectType;
public ObjectTa()
{
}
public ObjectTa(long objid)
{
this.objid = objid;
this.versionDate = Instant.now();
}
public long getObjId()
{
return objid;
}
public void setObjId(long objid)
{
this.objid = objid;
}
public Instant getVersionDate()
{
return versionDate;
}
public void setVersionDate(Instant versionDate)
{
this.versionDate = versionDate;
}
public String getObjectType()
{
return html" target="_blank">objectType;
}
public void setObjectType(String objectType)
{
this.objectType = objectType;
}
}
为此类创建映射器后(mm
是mykeyspace上会话的MappingManager
)
final Mapper<ObjectTa> mapper = mm.mapper(ObjectTa.class);
在呼叫时
mapper.save(new ObjectTa(1));
我明白了
查询准备失败:INSERT INTO mykey space . object _ ta(objid,objid,version_date,objecttype)值(?,?,?,?);:com . datas tax . driver . core . exceptions . invalidqueryexception:列名在com . datas tax . driver . core . responses$error . as exception(responses . Java:136)在com . datas tax . driver . core . session manager$4 . apply(session manager . Java:220)在com . datas tax . driver . core . session manager$4 . apply(session manager . Java:196)在com . Google . common . util . concurrent . futures$上
我不明白为什么在查询中生成重复的objid
。
提前感谢您对问题的指导。
克莱门斯
我认为这是因为字段名(Objid
)与setter/getters(getObjId
)的大小写使用不一致。如果您将getObjId
和setObjId
分别重命名为getObjid
和setObjid
,我相信它可能会起作用。
在未来的版本中,驱动程序映射器将允许用户更明确地了解是否使用setter/getter(JAVA-1310)以及命名约定是什么(JAVA-1316)。
我正在使用jOOQ生成SQL语句。如何创建insert语句?我可以生成select语句,但无法生成insert语句。我可以创建如下select语句: 如何为insert创建SQL语句
我的问题很简单。我知道UUID的概念,我想生成一个UUID来引用数据库中“存储”中的每个“项目”。看起来很合理,对吧? 问题是以下行返回错误: 我已经阅读了页面:http://www.postgresql.org/docs/current/static/uuid-ossp.html 我在Ubuntu 10.04 x64上运行Postgres 8.4。
我有一个脚本需要在一个语句中插入多个内容,比如 长sql是基于条件串联的,并且需要这么长。在phpmyadmin中使用这种sql语句是有效的,并且插入它没有问题,但是JAVA会吐出一个错误。 我可以做些什么来插入这种sql,或者我应该重做我的代码来启动几次以达到相同的结果吗?
问题内容: 当我这样做时(在laravel中): 它说: SQLSTATE [HY093]:无效的参数号(SQL:SELECT * FROM my_table,其中id =:id || id =:id) 但是当我这样做时(使用纯PHP): 成功了。我究竟做错了什么? PS显然,遇到问题时我运行的查询更有意义。 UPD 或多或少的真实查询: 问题答案: 从我所看到的一切都可以归结为无法处理命名参数。
问题内容: 我在mysql db表中有一个布尔字段。 要获得所有未过时的测试用例的计数,可以像这样简单地完成: 效果很好,但是flake8报告以下警告: E712:与False的比较应为“如果cond为False:”或“如果非cond:” 好吧,我认为这是有道理的。因此,将我的代码更改为此: 要么 但是它们都不起作用。结果始终为0。我认为filter子句不支持运算符“ is”或“ is not”。
问题内容: 这真让我发疯……我在这里做错了什么? 结果是… 02:59:12,885错误[STDERR] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ password” varchar(100)”附近使用 但… 完美运行…直接在M