似乎很奇怪,我无法想象如何在胡子中做到这一点.是否支持?
这是我尝试的悲伤尝试:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Run Code Online (Sandbox Code Playgroud)
这显然是不对的,但文档中没有提到这样的事情.甚至没有提到"其他"这个词:(
另外,为什么胡子是这样设计的?这种事情被认为是坏事吗?它是否试图强迫我在模型中设置默认值?那些不可能的情况怎么样?
它取决于您使用的平台,还是大多数开发人员建议/遵循的常规约定?
有几种选择:
id="someIdentifier"' - 看起来与javascript代码非常一致. id="some-identifier" - 看起来更像html5类似的属性和html中的其他东西.id="some_identifier" - 看起来与ruby代码非常一致,并且仍然是Javascript中的有效标识符我认为上面的#1和#3最有意义,因为它们使用Javascript更好玩.
对此有正确的答案吗?
我很难决定是否应该坚持使用Hibernate来完成一个新项目,或者尝试使用JPA和新的Spring Data实现.
Spring Data框架是针对具有适度查询要求的大型项目还是小型项目?
虽然我通过使用@Query注释确实看到了减少代码的优势,但您对动态查询有何看法?当你想要实现一个非常复杂的save()方法时呢?
文档说明要创建主存储库实现的自定义接口和实现,但是如果需要访问crud存储库本身的任何超级方法呢?crud存储库实现了自定义存储库 - 而不是相反.这似乎是一个奇怪的设计.
我很不确定这个框架是否能够应对复杂和大型应用程序的挑战.我从未遇到过Hibernate的许多问题,而且我正在考虑坚持使用旧的可靠而不是使用Spring Data JPA.
我该怎么办?如果我使用Spring Data JPA,我会遇到哪些无法预料的并发症和成本?
Spring Security可以使用@PreAuthorizeSpring控制器方法吗?
在我深入潜入MongoDB几天之前,我想我会问一个非常基本的问题,我是否应该深入研究它.我基本上没有使用nosql的经验.
我确实读过一些文档数据库的一些好处,我认为对于这个新的应用程序,它们会非常棒.对于许多类型的对象(许多m-to-m关系)和子类来说,做收藏夹,评论等总是很麻烦 - 这是一种很难处理的问题.
我还有一个结构,在SQL中定义会很麻烦,因为它非常嵌套并且比15个不同的表更好地转换为文档.
但我对一些事情感到困惑.
是否可以保持数据库的标准化?我真的不想更新多条记录.这仍然是人们如何处理MongoDB中数据库的设计?
当用户收藏某本书并且此选择仍存储在用户文档中时,会发生什么情况,但该书籍会被删除?没有外键,关系如何分离?我自己负责删除所有链接吗?
如果用户喜欢不再存在的书并且我查询它(某种类型的连接)会发生什么?我必须在这里做任何容错吗?
我正在考虑建立一个新的,轻量级的数据库人口框架.我绝对讨厌dbunit.在我做之前,我想知道是否有人已经这样做了.
我不喜欢dbunit的事情:
1)不推荐使用最简单的编写和入门格式.他们希望您使用膨胀的格式.有些甚至需要xml架构.好吧,无所谓了.
2)它们不按您编写的顺序填充行,但是在顺序表中是在xml文件中定义的.这非常糟糕,因为您无法以外键约束不会导致问题的方式对数据进行排序.这只会迫使你彻底解决它们的麻烦.
这也会浪费时间并使你的junit基类膨胀,以包含禁用外键约束的代码.您可能必须测试数据库类型(hsqldb等)并以特定于数据库的方式禁用它们.这很糟糕.
如果dbunit有助于自动禁用外键约束作为其框架的一部分,但它们不会这样做.他们确实跟踪方言......所以为什么不使用它们呢?最终,所有这一切都迫使程序员浪费时间而不是快速起床和测试.
3)XML是一种痛苦的写作.我不需要多说这个.他们也提供了很多方法,我认为这只会使问题复杂化.只需提供一个非常可靠的方法并完成它.
4)当你的数据变大时,跟踪id及其一致/正确的关系是一种巨大的痛苦.
另外,如果你没有在一个月的项目上工作,你怎么记得user_id 1是管理员,user_id 2是业务用户,user_id 3是工程师而user_id 4是其他什么?回去检查这是浪费更多时间.除了任意数字之外,应该有一种有意义的方法来检索它.
5)这很慢.我发现除非使用hsqldb,否则它会非常缓慢.它不一定是.还有很多方法可以搞乱其配置,因为"开箱即用"并不容易.有一个驼峰,你必须通过它来使其正常工作.所有这一切都鼓励人们不要使用它,或者在他们开始使用它时感到生气.
6)有些值往往会重复很多,比如日期.指定默认值,甚至让框架自动设置默认值是很好的,即使没有告诉它将默认值放在那里.这样,您可以使用所需的值创建对象,并将其余部分保留.如果不需要,这肯定会指定列的每个角落和裂缝.
7)最令人烦恼的可能是第一个条目必须包含所有值 - 甚至是空占位符 - 或者将来的行不会选择您实际指定的列.
DBunit没有将[NULL]转换为实际空值的合理默认值.您必须手动添加它.告诉我,谁没有用dbunit做到这一点?每个人都有.它应该不是这样的!
这意味着如果你有一个多态对象,你必须声明第一行中每个子类的连接表的所有外键,即使它们是null.如果为所有子类模式执行表,则仍必须指定第一行上的所有字段.这太可怕了.
有什么东西可以满足我,或者我应该成为更好的数据库测试框架的下一个框架开发人员?
杰克逊抛出一个奇怪的例外,我不知道如何解决.我正在使用Spring,Hibernate和Jackson.
我已经考虑过延迟加载会导致问题,但我已采取措施告诉Jackson不要处理各种属性,如下所示:
@JsonIgnoreProperties({ "sentMessages", "receivedMessages", "educationFacility" })
public class Director extends UserAccount implements EducationFacilityUser {
....
}
Run Code Online (Sandbox Code Playgroud)
我也为所有其他UserAccount子类做了同样的事情.
这是抛出的异常:
org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[46]->jobprep.domain.educationfacility.Director_$$_javassist_2["handler"])
at org.codehaus.jackson.map.ser.StdSerializerProvider$1.serialize(StdSerializerProvider.java:62)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:268)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:146)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:118)
at org.codehaus.jackson.map.ser.ContainerSerializers$IndexedListSerializer.serializeContents(ContainerSerializers.java:236)
at org.codehaus.jackson.map.ser.ContainerSerializers$IndexedListSerializer.serializeContents(ContainerSerializers.java:189)
at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:111)
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:296)
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:224)
at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:925)
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.writeInternal(MappingJacksonHttpMessageConverter.java:153)
Run Code Online (Sandbox Code Playgroud)
有关如何获取更多信息以查看导致此问题的建议?谁知道怎么修它?
编辑:我发现代理对象上存在getHander()和其他get*()方法.GRR!有什么办法我可以告诉杰克逊不要在代理上处理任何事情,或者我是谁?这真的很奇怪,因为吐出JSON的方法只会在某些情况下崩溃,而不是一直崩溃.尽管如此,这是由于代理对象上的get*()方法.
旁白:代理是邪恶的.它们破坏了Jackson,equals()和常规Java编程的许多其他部分.我很想完全放弃Hibernate:/
我刚开始进入backbone.js.看起来它非常复杂,并且不会只是看一个例子说"嗯,这很容易!" 并开始富有成效.虽然看起来不错.
文档是可以的,但我发现自己不能很好地理解"大局",以及所有这些组件如何协同工作.事件在各种视图中绑定和呈现的方式实际上似乎是很多纠缠.我理解分离问题的必要性,但实际上我想知道它是否只是一点点过度设计.
基本上......我无法通过backbone.js立即生产.我认为会有一两天的学习曲线.
进入backbone.js的最佳方式是什么?只是继续努力,或者是否有一些较大的示例应用程序可以下载到某处查看?
是否有更好的替代方案可能更容易学习并提供同样的好处?对我而言,生产力和直观性非常重要.我觉得backbone.js工作的方式有点异国情调.那可能只是我.
换句话说,如果没有像骨干这样的库来开发我的应用程序可能会更好,并且有机地创建一个像backbone.js这样的框架,但更像是对我来说直观的东西以及与结果代码库更内联的东西?
我一直试图用简单的例子来处理我自己的代码,并且我没有得到Javascript错误......但它不起作用.很有可能"一件小事"是错的......但是我开始觉得调试我的骨干应用程序可能是一个问题...所以也许有机地发展我自己可能实际上是一个更好的选择,我自己的理智.在黑暗中进行调试是一个真正的生产力杀手......老实说,我宁愿做自己的框架并编写我自己的代码,如果它让我无休止的调试.
我不知道该怎么办 - 所以我问的原因.
假设我在主页面级别编写代码,并且2个依赖项需要对象的相同实例,并且还将其声明为依赖项.适当的方法是什么?
基本上我想要做的就是说,"如果没有加载这个依赖...然后加载它.否则,使用已加载的同一个实例,然后传递那个."
我正在尝试使用UPDATE更新表中一堆行中的列值.问题是我需要使用子查询来派生此列的值,它依赖于同一个表.这是查询:
UPDATE user_account student
SET student.student_education_facility_id = (
SELECT teacher.education_facility_id
FROM user_account teacher
WHERE teacher.user_account_id = student.teacher_id AND teacher.user_type = 'ROLE_TEACHER'
)
WHERE student.user_type = 'ROLE_STUDENT';
Run Code Online (Sandbox Code Playgroud)
通常,如果老师和学生在两个不同的表中,mysql不会抱怨.但由于他们都使用相同的表,mysql反而吐出了这个错误:
错误1093(HY000):您无法在FROM子句中为更新指定目标表'student'
有什么办法可以强制mysql进行更新吗?我100%肯定,因为更新行,所以from子句不会受到影响.
如果没有,是否有另一种方法可以编写此更新sql来实现同样的效果?
谢谢!
编辑:我想我得到了它的工作:
UPDATE user_account student
LEFT JOIN user_account teacher ON teacher.user_account_id = student.teacher_id
SET student.student_education_facility_id = teacher.education_facility_id
WHERE student.user_type = 'ROLE_STUDENT';
Run Code Online (Sandbox Code Playgroud) java ×4
javascript ×3
database ×2
hibernate ×2
spring-mvc ×2
ajax ×1
backbone.js ×1
controller ×1
css ×1
dbunit ×1
foreign-keys ×1
html ×1
jackson ×1
jpa ×1
json ×1
mongodb ×1
mustache ×1
mysql ×1
nosql ×1
requirejs ×1
scala ×1
singleton ×1
spring ×1
sql ×1
standards ×1
templates ×1
testing ×1