所以,正如你从图像中看到的那样,我已经连接了a,c和b.我得到了我预期的结果.但是在第二张println中,当我连接a,e和b时,我最终连接起来了,而不是我期待的那样.我想知道,这种行为的原因和这种行为的解决方案.先感谢您.
import java.util.*;
public class prob
{
public static void main(String... args)
{
String a="???",b="1/2",c="?",e="B";
System.out.println(a+" : "+c+" : "+b);
System.out.println(a+" : "+e+" : "+b);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑(解释为什么我的问题不重复):我的问题是将L2R语言转换为R2L.
我正在尝试使用 Postgres 中的 jsonb 解决问题。这里有很多问题,我想做的是:
SELECT table.column->>'key_1' as a FROM "table"
Run Code Online (Sandbox Code Playgroud)
我尝试使用 -> 以及一些括号组合,但我总是在 a.
所以我尝试先获取所有密钥,看看它是否甚至识别 jsonb 。
SELECT jsonb_object_keys(table.column) as a FROM "table"
Run Code Online (Sandbox Code Playgroud)
这引发了一个错误:
cannot call jsonb_object_keys on a scalar
Run Code Online (Sandbox Code Playgroud)
所以,要检查列类型(我创建的,所以我知道它是 jsonb,但无论如何)
SELECT pg_typeof(column) as a FROM "table" ORDER BY "table"."id" ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
这在结果中正确地给了我“jsonb”。
中的值column类似于{"key_1":"New York","key_2":"Value of key","key_3":"United States"}
所以,我真的很困惑这里到底发生了什么,为什么将我的 json 数据称为标量?它实际上意味着什么以及如何解决这个问题?
在这方面的任何帮助都将非常有帮助。
PS:我正在使用 rails,将此作为该问题的一般问题发布。任何 Rails 特定的解决方案也可以工作。
我有一个非常简单的场景,我正在创建一个记录,而不是附加一个文件(之后save!,因为我需要记录上的 id 来生成附件的精细名称),所有这些都包含在一个事务中。
就像是:
def create
ActiveRecord::Base.transaction do
record = A.create!(a_params)
pdf = generate_pdf
record.file.attach(
io: StringIO.new(pdf),
filename: "PO##{record.id}.pdf",
content_type: 'application/pdf'
)
rescue
# here it should rollback transaction on all kind of errors, if it fails upload or whatever, but it does not
raise ActiveRecord::Rollback
end
end
Run Code Online (Sandbox Code Playgroud)
但是 activestorage 仅在提交后才上传文件,因此这种内部救援永远不会起作用,有效的是:
def create
record = nil
ActiveRecord::Base.transaction do
record = A.create!(a_params)
pdf = generate_pdf
record.file.attach(
io: StringIO.new(pdf),
filename: "PO##{record.id}.pdf",
content_type: 'application/pdf'
)
end
rescue
record&.destroy!
end
Run Code Online (Sandbox Code Playgroud)
在这里,我简化了这个场景,实际上我有一个场景,在一个循环中创建了很多记录,我不想保存任何记录,以防出现任何错误。
我发现了一些问题,如: …
我有两个 Rails 应用程序base1和base2.
base1db1在该数据库中使用并拥有多个租户,其使用公寓 gem。
base2是单租户应用程序,以数据库db2为主,并且还使用来自db1.
现在的问题是,base2应用程序建立了连接,我可以在应用程序中获取公共租户中的db1数据数据。如何从应用程序的不同模式中获取数据?db1base2db1base2
我正在使用.Net 4.5的Entity Framework 6.我有一个存储过程来选择和返回数据.其中一个返回列是地理类型.在Visual Studio 2015中,我右键单击.edmx文件,单击"从数据库更新模型...".此操作获取我的存储过程并创建一个复杂类型的storeprocedurename_Result.除地理类型外,所有列都在复杂类型对象中表示.
同时我的一个表也有Geography类型,但该表是通过地理列成功检索的,并且运行正常.所以,我可以猜到EF支持地理类型并且正在运行.
但我不知道为什么在生成的复杂类型中没有为我生成那种类型.
我尝试手动添加公共System.Data.Entity.Spatial.DbGeography col_name {get; 组; 但它在结果中得到null.
为了记录我已经尝试在Sql Server管理研究中执行该过程,并且该列存在于那里.所以,它在EF端的问题不是DB端.
我已经搜索并得到了几个像这样的问题,但似乎没有人能够回答它们.
我无法理解这个问题的回答.
http://www.scriptscoop.net/t/2758a3668fde/geography-column-returned-in-stored-procedure-not-shown-in-entity-fram.html
,它是stackoverflow上的一个
/sf/ask/2001445981/#=
上述问题的人使用了一种解决方法,正如他在评论中说的那样"不,我不知道"我认为您可以自动获取地理类型.因为当您在模型浏览器中查看结果时,它会显示"不支持".要解决此问题,我的存储过程会通过[pro_GeoLocation] .STAsText将地理类型转换为字符串( )作为pro_GeoLocationPoint.然后我在我的C#代码中使用正则表达式得到long和lat." 但这不是一个好的选择,必须有一个解决方案.