我想要一个实体的列,它只接受一组枚举值中的一个。例如,假设我有一个带有字符串列“petType”的 POJO/实体类“Pet”。我希望 petType 只允许以下三个值之一:“cat”、“dog”或“gorilla”。我将如何注释 getPetType() 方法以创建强制执行此操作的数据库级约束?
我允许 Hibernate 在应用程序启动时通过将 Hibernate 属性“hbm2ddlauto”设置为“update”来创建或更新我的数据库表。
我曾尝试将参数化用户类型与 @Type 注释结合使用,但这似乎并未对数据库列本身提供任何类型的约束。除了在 columnDefinition 元素中使用一些 SQL 之外,似乎没有办法在 @Column 注释中指定这种约束,而且我很犹豫要不要走这条路,因为似乎无论我使用什么都不会有跨平台/数据库独立(对我来说很重要,因为我在 Oracle 上运行我的生产代码,但我使用 HSQLDB 和 Derby 在本地进行测试)。也许我想要做的只是使用注释无法完成。
在此先感谢您提供有关此主题的任何见解。
我第一次在生产环境中使用实体框架代码。一切都很顺利,直到我们建立了数据库并将一些数据放入其中,然后为了获取我们从另一个位置导入的一些数据,我们不得不更改字段长度。所以我们制作了一些字段 nvarchar(99) 而不是 nvarchar(50)。
一切顺利,应用程序仍然可以工作,但我知道我需要更改数据注释,否则在加载并尝试保存太长的字段时它会在稍后爆炸。当我这样做时,即使模型和数据库现在匹配,应用程序也会爆炸。所以我认为它是元数据表中的散列,所以我想我会很聪明并创建一个新的数据库并从那里获取散列并复制它。那不起作用,事实上现在我无法让我的应用程序连接到我们加载了数据的测试数据库。
我不想删除并重新创建这个数据库。我希望实体框架意识到模型和模式确实匹配。我有什么办法可以做到这一点吗?另外,为什么从实体框架使用此模型创建的数据库复制元数据不起作用?
这可能很容易,但我是 symfony2 的新手,所以我想先问一下。我正在控制器中创建一个登录表单:
public function showAction()
{
$admin = new Administrator();
$form = $this->createFormBuilder($admin)->setAction($this->generateUrl('admin_login_process'))
->setMethod('POST')
->add('username', 'text')
->add('password', 'password')
->add('remember', 'checkbox')
->add('login', 'submit')
->getForm();
return $this->render('EraAdminBundle:Login:login.html.php', array('form'=>$form->createView()));
}
Run Code Online (Sandbox Code Playgroud)
用户名和密码字段是管理员实体的一部分,但记住复选框当然不是。我如何将它与表单一起提交?因为如果我让它原样,我会收到这个错误:
Neither the property "remember" nor one of the methods "getRemember()", "isRemember()", "hasRemember()", "__get()" or "__call()" exist and have public access in class "Era\RestoranteBundle\Entity\Administrator".
Run Code Online (Sandbox Code Playgroud) 我有多个 EntitySets 我想在我的 SAP 后端更新,因此我将我的数据(有效负载)作为 JSON 获取并将其放入请求中(它成功地在节点“数据”中):
代码:
var oTreeJSON = oTreeTable.getModel().getProperty("/root");
var oModel = sap.ui.getCore().getModel();
var batchChanges = [];
for (var i = 0; i < oTreeAll.length; i++) {
batchChanges.push(oModel.createBatchOperation("/sap/opu/odata/sap/MY_SERVICE/?$batch", "POST", oTreeAll[i]));
}
oModel.submitBatch();
Run Code Online (Sandbox Code Playgroud)
我的请求如下所示:
它应该到达 SAP 的哪个位置(哪种方法)?我做错了什么,任何地方都没有错误,但是我的后端没有调用......很高兴每一个提示!谢谢。
降低复杂性的工作示例:
var oEntry = {};
oEntry.MyId = "00000001";
oEntry.Value = "300";
batchChanges.push(oModel.createBatchOperation("MyEntitySet", "POST", oEntry, null));
oModel.addBatchChangeOperations(batchChanges);
oModel.setUseBatch(true);
oModel.submitBatch();
Run Code Online (Sandbox Code Playgroud)
为了记录,方法调用:
我在这里要求一种简单的方法来在 Eclipse 从数据库生成的 JPA 实体中添加一些自定义代码。
基本上我想要实现的是添加包含实体属性名称的公共字符串属性,并在我需要提供“属性名称”作为字符串时使用它们,并确保不会出现运行时访问错误。
像这样的东西
@Entity
@Table(name="clients")
@NamedQuery(name="ClientModel.findAll", query="SELECT c FROM ClientModel c")
public class ClientModel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="id_client")
private long idClient;
public String name;
public ClienteModel() {
}
public long getIdClient() {
return this.idClient;
}
public void setIdClient(long idClient) {
this.idClient = idClient;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
//CUSTOM CODE
public static final String idClientProperty = …
Run Code Online (Sandbox Code Playgroud) 你如何处理 DDD 中的 url slug 生成?
内部构造函数?但是依赖其他服务的实体并不好。
Pass as constructor argument? I think slugs shouldnt be there because they are not business requirements. are they?
or just having a setter?
我正在尝试模拟一个问题,其中Company有很多Teams。有一个商业规则,“每个公司的团队名称必须是唯一的”。但是, aTeam
有许多其他行为,例如加入。此外, aTeam
可以有许多Report
s - 维护对Team.Id
.
目前,Team
和Company
是单独的聚合根。为了强制执行Team.Name
必须是唯一的不变量,Company
我是否可以在聚合中创建一个团队实体Company
,它只负责创建和重命名Team
?我相信Company
必须创建Team
才能执行规则,并负责重命名,但仅此而已。
我的问题是:这正常吗?跨聚合边界拆分域概念是强制执行不变量的正常方法吗?
我能看到的唯一选择是将整个Team
聚合移动到Company
聚合中。但在这种情况下,我将在Report
.
我想这是一个常见的建模问题,但谷歌让我失望了!
任何帮助深表感谢!
modeling entity design-patterns domain-driven-design aggregateroot
到目前为止我所做的是 - >我已经在其中创建了一个包和实体类,并使用以下命令从该实体类创建了一个名为"news"的数据库表
php app/console doctrine:schema:update --force
一切顺利.
现在我在其中创建了一个新的bundle和一个其他的实体类,我想在其中创建一个名为"user"的数据库中的另一个表,但是给出了一个错误:"名为'symfony.news'的表已经存在'".
class user {
private $id;
private $userEmail;
public function getId() {
return $this->id;
}
public function setUserEmail($userEmail) {
$this->userEmail = $userEmail;
return $this;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在创建带有分页的页面,并获得了采用参数page
和numberOfElementsPerPage
.
在此方法中,我使用 Linq to Entities 加载页面元素:
public List<Item> GetElements(int page, int numberOfElementsPerPage)
{
return DataContext.Items.OrderBy(x => x.Id).Skip((page-1)*numberOfElementsPerPage).Take(numberOfElementsPerPage);
}
Run Code Online (Sandbox Code Playgroud)
我想问的是,这个Skip
/如何Take
工作?它是否首先从数据库中获取所有记录,然后订购Skip
/ Take
?如果是的话,我认为如果数据库有 100000 条记录甚至更多,这是非常糟糕的解决方案。那么最好的解决方案是什么?