我最近下载了Notepad ++,但我对如何在其上启用JQuery/JQueryUI的代码辅助感到失望.
任何提示和方向?
我有一个实体类和一个基于该实体的子类:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class A
Run Code Online (Sandbox Code Playgroud)
和
@Entity
public class B extends A
Run Code Online (Sandbox Code Playgroud)
我需要发出一个仅在基类(A)上使用存储过程的本机查询.如果我尝试如下:
entityManager.createNativeQuery("select * from A a where procedure(f)",A.class).getResultList()
Run Code Online (Sandbox Code Playgroud)
我收到有关"在ResultSet中找不到列clazz_"的错误.我假设JPA提供程序添加此列以区分基类和扩展类.我可以通过显式添加clazz列和子类中的所有字段来解决此问题:
entityManager.createNativeQuery("select *,1 as clazz_,null as prop1,null as prop2 from A a where procedure(f)",A.class).getResultList()
Run Code Online (Sandbox Code Playgroud)
其中"prop1"和"prop2"是子类B的属性.但是,这似乎是一种不必要的破解,如果子类B发生变化,则容易出现维护问题.
我的问题是:如何在已定义继承的实体上使用存储过程进行查询?
我从CodeIgniter开始,经过几个小时在Google潜水后,我有点困惑.
让我们试着用一个简单的例子来解释我的问题:我有一个表'car',字段'name'和'color'.因此我想拥有一个php类Car,以便我的代码最终看起来像这样:
$car = new Car('BMW', 'red'); //new $car Object
$car->save(); //this will make an SQL insert to the table 'car'
//Lets query all cars
$cars = Car::get_all();
//cars will be an array of Car objects, (not a set of rows!)
Run Code Online (Sandbox Code Playgroud)
因此,我正在寻找与RubyOnRails或Django(Python)中的内容非常相似的东西.我需要处理所有类型的关系,并能够以真正的OOP + MVC方式编写代码.
这些是我失败的方法:
使用外部ORM(DataMapper,Doctrine,AcidCrud ...)
它们要么需要太多设置,要么以糟糕的方式处理关系.
使用CodeIgniter类(扩展CodeIgniter的Model类)
class Car extends Model{
public function Car($name='',$color='')
{
$this->name = $name;
$this->color = $color;
parent::Model();
}
public function save()
{
$data = array(
'name' => $this->name ,
'color' => …Run Code Online (Sandbox Code Playgroud) 特定于类的new,new [],delete和delete []的标准是否必须是静态的.我可以让他们成为非静态成员运营商.为什么它们必须是静态的
我的Linux Perl脚本有问题.它的主要目的是成为3个应用程序之间的中间人.该怎么做:
$udp_port 问题是我的应用程序当前工作,直到我第一次断开TCP客户端.然后我再也无法连接它了,它在接收到下一个UDP数据包后超时$udp_port.因此,基本上每当我想重新连接TCP时,我都必须重新启动应用程序.
所有这一切都应该尽可能快(每毫秒计数).发送到UDP或TCP的文本不包含空格.没有必要同时支持多个TCP客户端,但它肯定会有利:-)
这是我目前的代码:
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
use Net::hostent;
use threads;
use threads::shared;
my $tcp_port = "10008"; # connection from TCP Client
my $udp_port = "2099"; # connection from Announcer
my $udp_password = ""; # password from Announcer
my $title = "Middle Man server version 0.1";
my $tcp_sock = IO::Socket::INET->new( Proto => 'tcp', LocalPort => $tcp_port, Listen => SOMAXCONN,Reuse => 1)|| die @!;
my $udp_sock = new IO::Socket::INET(LocalPort => $udp_port, …Run Code Online (Sandbox Code Playgroud) 有谁知道原因:
public void foo()
{
System.out.println("Hello");
return;
System.out.println("World!");
}
Run Code Online (Sandbox Code Playgroud)
将被报告为Eclipse下的"无法访问的错误",但是
public void foo()
{
System.out.println("Hello");
if(true) return;
System.out.println("World!");
}
Run Code Online (Sandbox Code Playgroud)
只触发"死代码"警告?
我能想到的唯一解释是Java编译器只标记第一个,而Eclipse中的一些额外分析计算出第二个.但是,如果是这种情况,为什么Java编译器不能在编译时弄清楚这种情况呢?
Java编译器不会在编译时弄清楚if(true)没有效果,从而产生基本相同的字节码吗?在什么时候应用可达代码分析?
我想一个更通用的方法来思考这个问题是:"什么时候应用可达代码分析"?在将第二个Java代码片段转换为最终字节码时,我确信在某些时候删除了"if(true)"运行时等效项,并且两个程序的表示变得相同.然后,Java编译器不会再次应用其可访问的代码分析吗?
我有一个看起来像这样的Django模型.
class Solution(models.Model):
'''
Represents a solution to a specific problem.
'''
name = models.CharField(max_length=50)
problem = models.ForeignKey(Problem)
description = models.TextField(blank=True)
date = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ("name", "problem")
Run Code Online (Sandbox Code Playgroud)
我使用表单添加如下所示的模型:
class SolutionForm(forms.ModelForm):
class Meta:
model = Solution
exclude = ['problem']
Run Code Online (Sandbox Code Playgroud)
我的问题是,SolutionForm不验证Solution的unique_together约束,因此,它IntegrityError在尝试保存表单时返回一个.我知道我可以validate_unique用来手动检查这个,但我想知道是否有任何方法可以在表单验证中捕获它并自动返回表单错误.
谢谢.
我试图在我的WCF服务的FaultException中抛出自己的自定义异常,并在我的WCF客户端中捕获它.但是,在客户端,异常将作为非泛型FaultException捕获,并且我的自定义异常的详细信息将丢失.
我的自定义例外是:
[Serializable] public class MyCustomException : ApplicationException
{ ... }
Run Code Online (Sandbox Code Playgroud)
这是我扔它的方式:
throw new FaultException<MyCustomException>(new MyCustomException("foo bar!"));
Run Code Online (Sandbox Code Playgroud)
(请注意,我在接口中的方法上放置了[FaultContract(typeof(MyCustomException))]
以下是我尝试在客户端捕获它的方法:
...
catch (FaultException<MyCustomException> mcex)
{
Console.WriteLine(mcex);
}
catch (FaultException fex)
{
Console.WriteLine(fex);
}
Run Code Online (Sandbox Code Playgroud)
我的目标是在上面的第一个catch子句中捕获异常,但最终会在第二个catch子句中捕获.
奇怪的是,如果我用ApplicationException替换MyCustomException,那么确实正确捕获了FaultException.
我猜测问题是MyCustomException序列化为Serializable(而不是通过DataContractSerializer),也许我错过了一些WCF的附加指令.ServiceKnownType属性中的某些内容?(虽然我尝试过,但无济于事).
我已经在SQL服务器中使用了CLR存储过程一段时间了,但我仍然想知道使用它们的最佳情况是什么.
MSDN提供了一些使用指南,如重字符串操作(正则表达式),或替换声明了许多表变量和游标的T-SQL.我很想知道用户使用CLR存储过程解决了哪些问题,以及示例/基准测试.
例如,我发现CLR存储过程+ SSRS是一种很好的方法,可以将数据操作逻辑从SSRS和T-SQL中分离出来,并变成易于读取和操作的托管代码.
我正在使用C#编写ASP.Net 2.0项目.我有一些数据存储在会话状态.为了便于使用,它包含在属性中,如下所示:
protected IList<Stuff> RelevantSessionData
{
get
{
return (IList<Stuff>) Session["relevant_key"];
}
set
{
Session["relevant_key"] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
获取和设置值完全符合您的预期.如果我想清除该值,我只需将其设置为null,并且没有问题.但是,在另一个开发人员的页面中,他调用了集合的Clear()方法.我认为这将是一个错误,但它似乎工作,我不明白为什么.它的工作原理如下:
Debug.WriteLine(RelevantSessionData.Count); //outputs, say, 3
RelevantSessionData.Clear();
Debug.WriteLine(RelevantSessionData.Count); //outputs 0
Run Code Online (Sandbox Code Playgroud)
为什么这样做?我天真的期望是中间行从会话加载序列化值,反序列化为对象,调用Clear()该对象,然后让未命名对象超出范围.这将是一个错误,因为存储在Session中的值将保持不变.但显然,它足够聪明,可以调用属性setter并将新更改的集合序列化回会话.
这让我有点紧张,因为我们的遗留代码中有些地方属性设置器有副作用,我不希望那些被调用,如果不是这样的话.
在这种情况下,属性setter是否总是被调用?还有别的事吗?或者我是否完全误解了这里发生的事情?
[补充解释答案]
事实证明误解了.我知道存储在Session中的对象必须是可序列化的,并且基于此我对集合在内部的行为做了太多假设.我是在思索.
存储对象(my IList)只有一个实例.每次调用getter都会返回对同一实例的引用.所以上面引用的代码就像看起来一样,不需要特殊的魔法.
并回答标题问题:不,不会暗中调用setter.