我有一个由jQuery DataTables增强的动态表,它显示一个类似于这个例子的自定义对象.
JSON:
{
"data": [
{
"name": "Tiger Nixon",
"position": "System Architect",
"salary": "$320,800",
"start_date": {
"display": "SomeString",
"timestamp": 1303686000
},
"office": "Edinburgh",
"extn": "5421"
},
// ... skipped ...
]}
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$(document).ready(function() {
$('#example').DataTable( {
ajax: "data/orthogonal.txt",
columns: [
{ data: "name" },
{ data: "position" },
{ data: "office" },
{ data: "extn" },
{ data: {
_: "start_date.display",
sort: "start_date.timestamp"
} },
{ data: "salary" }
]
} );
} );
Run Code Online (Sandbox Code Playgroud)
不同之处在于我动态构建列配置,因为列可以按任何顺序排列,其他列可以在列表中添加或删除.对于这个例子(我的情况非常相似),问题是由于某种原因,该timestamp
属性被排序为String而不是作为数字排序. …
我开始看一下Firebase远程配置,阅读了文档并创建了一个简单的测试应用程序,以了解缓存的工作原理,但是我不清楚该行为。
在下面的代码中,每次更改welcome_message
属性并单击fab按钮时,都会获取该属性的新值,我希望仅在缓存过期后才能获取新值。
public class MainActivity extends AppCompatActivity {
private FirebaseRemoteConfig remoteConfig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(this::fabClickListener);
remoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(false)
// .setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
remoteConfig.setConfigSettings(configSettings);
remoteConfig.setDefaults(R.xml.firebase_remote_properties);
}
private void fabClickListener(View view) {
String welcomeMessage = remoteConfig.getString("welcome_message");
Snackbar.make(view, welcomeMessage, Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
remoteConfig.fetch(60_000)
.addOnFailureListener(exception -> Toast.makeText(this, "Fetch Failed", Toast.LENGTH_SHORT).show())
.addOnSuccessListener(result -> {
Toast.makeText(this, "Fetch Succeeded", Toast.LENGTH_SHORT).show();
remoteConfig.activateFetched();
})
.addOnCanceledListener(() -> Toast.makeText(this, "Fetch …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个非常奇怪的引用完整性约束违规,以下代码说明了我在做什么(所有内容都使用相同的 entityManager 在同一个事务中运行):
...
em.persist(newEntity); //id -> @GeneratedValue(strategy = GenerationType.AUTO)
updateReference(oldEntity, newEntity);
...
public void updateReference(Entity1 oldReference, Entity1 newReference) {
String jpql = "UPDATE entity2 e"
+ " SET e.entity1 = :newReference"
+ " WHERE e.entity1 = :oldReference";
Query query = entityManager.createQuery(jpql);
query.setParameter("newReference", newReference);
query.setParameter("oldReference", oldReference);
query.executeUpdate();
}
Run Code Online (Sandbox Code Playgroud)
更新语句抛出“JdbcSQLException:参照完整性约束冲突”。最奇怪的是,如果我在运行更新语句之前运行下面显示的选择,它不会出错......
entityManager.createQuery("SELECT e FROM entity1 e WHERE e.id = " + newReference.getId()).getResultList();
Run Code Online (Sandbox Code Playgroud)
我的猜测是,由于某种原因,在运行更新之前实体从会话中被清除(即使我检查了持久性上下文中的对象,并且实体在那里......),并且当我运行选择时实体是“ fetched”回到会话中。但这只是一个猜测,我不知道为什么会发生这种情况。
*我使用的是 JPA 2.1、Hibernate 4.3.11.Final 和 H2
2016-04-15 16:07:35.976; [http-bio-8080-exec-19]; ERROR; o.h.e.jdbc.spi.SqlExceptionHelper; Referential integrity constraint violation: "FK_ANAL_RPPA_ATUALIZADA: PUBLIC.RESULTADO_PRE_PROCESSADO_ANALISE …
Run Code Online (Sandbox Code Playgroud)