Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL';s on update now()在通过Hibernate更新时为一个表工作,而不为另一个表工作_Java_Mysql_Database_Hibernate_Database Administration - Fatal编程技术网

Java MySQL';s on update now()在通过Hibernate更新时为一个表工作,而不为另一个表工作

Java MySQL';s on update now()在通过Hibernate更新时为一个表工作,而不为另一个表工作,java,mysql,database,hibernate,database-administration,Java,Mysql,Database,Hibernate,Database Administration,当Hibernate进行更新查询时,我无法让MySQL在更新当前时间戳时更新标记为当前时间戳的时间戳字段 CREATE TABLE `homes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userId_fk` int(11) NOT NULL, `type_fk` varchar(45) NOT NULL, `summary` varchar(255) DEFAULT NULL, `created` timestamp NOT NUL

当Hibernate进行更新查询时,我无法让MySQL在更新当前时间戳时更新标记为当前时间戳的时间戳字段

CREATE TABLE `homes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userId_fk` int(11) NOT NULL,
  `type_fk` varchar(45) NOT NULL,
  `summary` varchar(255) DEFAULT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `fk_homes_users` (`userId_fk`),
  KEY `fk_homes_homeTypes_idx` (`type_fk`),
  CONSTRAINT `fk_homes_homeTypes` FOREIGN KEY (`type_fk`) REFERENCES `homeTypes` (`type`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_homes_users` FOREIGN KEY (`userId_fk`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;



CREATE TABLE `addresses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `street` varchar(45) DEFAULT NULL,
  `city` varchar(45) NOT NULL,
  `province` varchar(45) DEFAULT NULL,
  `postcode` varchar(45) NOT NULL,
  `country` varchar(45) NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `fk_addresses_countries_idx` (`country`),
  CONSTRAINT `fk_addresses_countries` FOREIGN KEY (`country`) REFERENCES `countries` (`iso3166_alpha3`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
根据和,MySQL应该处理具有多个列的表,默认值为
CURRENT\u TIMESTAMP
。我的问题是,当使用Hibernate更新实体时,这似乎适用于一个表,但不适用于同一模式中的另一个表。另外,当我直接对DB运行更新时(不使用Hibernate),它对所有表都可以正常工作

第二个表addresses的更新列随每次更新而正确更改。第一个没有。我正在使用MySQL 5.7和Hibernate 4.3.11

我的实体:

@Entity
@Table(name = "homes")
public class Home {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @NotNull
    @Column(name = "userId_fk", nullable = false)
    private Integer userId;

    @OneToOne(cascade = ALL)
    @JoinTable(name = "homes_addresses", joinColumns = @JoinColumn(name = "homeId_fk"),
            inverseJoinColumns = @JoinColumn(name = "addressId_fk"))
    private Address address;

    @Enumerated(EnumType.STRING)
    @Column(name = "type_fk") // TODO nullable = false  ?
    private HomeType type;

    private String summary;

    private LocalDateTime created;

    private LocalDateTime updated;

}


@Entity
@Table(name = "addresses")
public class Address {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String street;

    @NotNull
    private String city;

    private String province;

    @NotNull
    private String postcode;

    @NotNull
    private String country;

    private LocalDateTime created;

    private LocalDateTime updated;

}
更新时不触发的查询示例:

Hibernate:
    /* update
        xxx.xxx.Home */ update
            homes
        set
            created=?,
            summary=?,
            type_fk=?,
            updated=?,
            userId_fk=?,
            videoLink=?
        where
            id=?

您运行的更新查询是什么?也请发布。@SameerMirji感谢您的评论,我刚刚注意到只有当查询来自常规日志上的HibernateTurn时才会发生这种情况,以查看Hibernate发送到MySQL的所有命令。然后张贴那些;也许Hibernate正在做一些事情来阻止更新。