我工作的项目(使用Java,Spring,Hibernate)最近从Oracle改为MySQL.在某些情况下,代码中的某些属性是MySQL中的保留字,例如"release".
有一些解决方案,1)重命名代码中的属性和后续的getter/setter方法,还更新调用这些方法的代码2)使用@Column(name ="`release`")在代码中注释属性.这告诉hibernate在与数据库交谈时引用该名称.
我宁愿远离第一种方法来减少破坏更多东西的机会.第二种方法是"ok",除了它特定于MySQL.在我们的开发中.设置我们使用HSQL,它不喜欢这些列名称的反引号.
我查看了org.hibernate.mapping.Column类,我发现它有"getQuotedName"方法,如果我可以继承Column并告诉Hibernate使用我自己的Column类,我可能会覆盖这些方法.
基于以下首选方法解决此问题的最佳方法是:a)不必重构代码库(b/c更改属性名称,getter/setter方法等)和b)希望应用程序仍然可以在HSQL中工作MySQL的.
在属性文件中具有可以切换以打开/关闭某些列命名修复的属性是合理的.这提醒我,我尝试使用自定义命名策略并覆盖"columnName"方法来围绕反引号中的列名称...这不起作用,即使在MySQL上也是如此.
我有一个包含枚举属性的实体.该属性可以是我的代码库中的任何一种类型的枚举:
public enum AutomobileType {
CAR, TRUCK, MOTORCYCLE
}
public enum BoatType {
ROW_BOAT,YACHT,SHIP
}
@Entity
public class FooBar {
@Enumerated(value=EnumType.ORDINAL)
private Enum enumValue;
public void setEnumValue(Enum value) { ... }
public Enum getEnumValue() { ... }
}
Run Code Online (Sandbox Code Playgroud)
这失败了,有一个例外,"错误的数据类型:对于输入字符串:"[B @ f0569a".我改变了FooBar将属性存储为有效的整数,但这不是我需要的.我需要实际的枚举.任何建议关于如何使这个工作,以便枚举可以作为int持久化,但后来拉出正确的枚举类型?
我有两个存储库,它们位于不同的服务器上,称为repo-1和repo-2.
要开始这两个"中继"是相同的:
repo-1/trunk == repo-2/trunk
同时更改被提交到repo-1/trunk,我正在努力并对repo-2/trunk进行更改.
现在我需要将repo-1/trunk中的更改合并到repo-2/trunk中.
我以为我会将repo-1/trunk复制到repo-2/tags/r1_20090224,然后将该标签合并到我的repo-2/trunk的本地工作副本中(即c:\ dev\repo2-trunk).
有关如何做到这一点的任何建议?我正在尝试使用TortoiseSVN并执行"合并两个不同的树",我使用了以下设置:
来自:repo-2/trunk到:repo-2/tags/r1_20090224工作副本:c:\ dev\repo2-trunk
我也试过交换"从"和"到"...但没有运气.通过尝试这两个合并选项中的任何一个,我最终得到以下结果:
如果我从主干到标签合并(进入我的本地副本repo-2/trunk),我会丢失主干更改并获得标签更改.
如果我从标签合并到主干(进入我的本地副本repo-2/trunk),我会丢失标签更改并保持我的主干更改.
有什么建议吗?
我有一个案例,事务启动后(在代码中)调用一个方法来启动新事务。当内部事务完成时,数据将持久保存在数据库中,但数据对外部事务不可见。
这是代码片段..
@Transactional(readOnly = true)
public void doSomething() {
// Some stuff happens here
doMoreStuff();
// Some more stuff happens here.
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void doMoreStuff() {
...
}
Run Code Online (Sandbox Code Playgroud)
“doMoreStuff”方法更新数据库中的一些数据,之后“doSomething”方法需要查看更新的数据,但事实并非如此。例如,“doMoreStuff”将布尔值从 false 设置为 true 并保留它。“doSomething”方法仍然只将值视为 false。
有什么建议么?
我有两个Rails应用程序(使用rails 3.0.7),称之为"blog"和"auth".我想从"博客"安装"auth",以便我可以运行"博客"应用并将某些请求路由到"auth"应用.
似乎我需要嵌入或者可能创建一个"引擎",但我并不是百分之百确定哪个是正确的.
如何在"博客"应用程序中嵌入"auth"应用程序?
我想用gollum创建一个wiki并将其推送到我自己的git repo,这可能吗?
我创建了一个新的git repo,安装gollum并启动它.我得到了"编辑/主页"页面.我添加了一些内容,保存......一切都很好看.甚至"修订历史"也表明修订已经发生.
然后我停止了gollum,发现我的git repo没有什么新东西,我甚至检查过是否有东西被推了......没什么.我不确定它在存储我运行时添加的内容的方式/位置.
有任何想法吗?
谢谢
如果我有一个Web应用程序,说我正在使用Spring MVC,我在表单和控制器中添加验证.如果客户端以其他方式访问我的应用程序(通过REST服务等),我可能也会在我的服务层中进行验证.在这种情况下,我可能在多个地方都有验证逻辑/代码.
是否有建议的方法来保持验证部分DRY?
我有一个简单的搜索表单,看起来像:
应用程序/视图/搜索/ index.html.erb
<%= form_for @search, :as => :search, :remote => true, :url => {:action => "query"}, :html => {:id => 'search-form'} do |f| %>
...
<% end %
Run Code Online (Sandbox Code Playgroud)
*应用程序/控制器/ search_controller.rb*
def index
@search = SearchCriteria.new
end
def query
@search = SearchCriteria.new(params[:search])
unless @search.valid?
respond_to do |format|
format.json { render :json => {:error => 'validation failed'}, :status => 400 }
end
return
end
# otherwise, perform search...
render :json => @results
end
Run Code Online (Sandbox Code Playgroud)
公共/ Java脚本/ application.js中
$(function() {
$('search-form')
.bind('ajax:success', function(e, …Run Code Online (Sandbox Code Playgroud) 我有一个简单的搜索表单,看起来像:
应用程序/视图/搜索/ index.html.erb
<%= form_for @search, :as => :search, :remote => true, :url => {:action => "query"}, :html => {:id => 'search-form'} do |f| %>
...
<% end %
<div id="search-results"></div>
Run Code Online (Sandbox Code Playgroud)
*应用程序/控制器/ search_controller.rb*
def index
@search = SearchCriteria.new
end
def query
@search = SearchCriteria.new(params[:search])
# otherwise, perform search...
@summaries = do_search @search
respond_to do |format|
format.js
end
end
Run Code Online (Sandbox Code Playgroud)
然后我有一个js.erb模板:*app/views/search/_query.js.erb*
$('#search-results').update("<%= escape_javascript(render(@summaries)) %>");
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到任何被放入'搜索结果'div的内容.我需要某种模板来呈现"@summaries"吗?如果是这样,它会被命名,我将它放在哪里(即app/views/search?)(我正在使用jquery和rails 3)
谢谢.
我想删除一个通过include函数添加到我的类的类方法.例如:
class Foo
include HTTParty
class << self
remove_method :get
end
end
Run Code Online (Sandbox Code Playgroud)
这不起作用,它说"get"不是Foo的方法.基本上,"get"方法是HTTParty模块提供的,我想删除它.我尝试了几次没有运气的尝试.我读过/试过的东西:
java ×4
hibernate ×3
jpa ×2
jquery ×2
mysql ×2
ruby ×2
spring ×2
enums ×1
gollum-wiki ×1
hsqldb ×1
merge ×1
spring-mvc ×1
svn ×1
tortoisesvn ×1
validation ×1